2015-08-15 5 views
1

У меня есть чип FT232RL. Я использую его для преобразования usb в протокол RS232, который мне нужно преобразовать данные и использовать его дальше.Управление потоком по FT232RL

«Набор данных» (устройство с другой стороны, как модем, в моем случае MAX485 IC), который я использую, не может быть настроен. Все, что я могу дать, это сигнал управления для чтения или записи. Так что это не очень полезно.

Мое приложение требует, чтобы я мог установить его в «режим записи», когда я отправляю данные, а затем, КАК Я ПРОСИЛ ОТПРАВИТЬ, мне нужно установить его в режим «читать», чтобы получить который он генерирует.

Примечание: Сигнал управления является простым высокая или низкая Данные могут быть несколько байт

Я думаю, что один из способов сделать это, чтобы быть в состоянии прочитать, сколько данных есть в буфере передачи RS232 , Как только это становится «0», то все данные будут переданы, и я могу установить штифт управления в «режиме чтения»

Другой способ сделать это использует управление потоком

Я хочу объяснить свое понимание контроля потока перед тем, высказав свою проблему для ясности цели:

(1) Я отправить данные с помощью Python на FTDI через USB

(2) FTDI потребности написать ВЫСОКОЕ на линии DTR

(3) При получении HIGH на линии DSR, он должен начать передачу (это если я отключили параметры управления RTS/CTS потока)

(4) После того, как это делается передачи, он должен написать низко на DTR линии, обозначающей конец передачи

проблема заключается в том, что я не могу получить линию DTR для включения и выключения, как ожидается STEP (2) не происходит

import serial 
ser = serial.Serial("com1")  # initialised port as ser 
ser.dsrdtr = True    # set dsrdtr mode 
ser.write("blah blah")   # sent a command 

Я даже попробовал следующее:

ser.setDTR(True)     # write a HIGH on DTR 
ser.setDTR(False)    # write a LOW on DTR 

Это все еще не решает мою полную проблему.

Пожалуйста, советы

EDIT: Я должен упомянуть, что FT232RL я использую на прорыве доске по NEX-робототехники и шпилек, которые я имею доступ к являются: 3.3V, 5V, CD, RXD , TXD, DTR, GND, DSR, RTS, CTS и RI и, конечно же, порт USB для подключения к моему ноутбуку

EDIT2: Могу ли я использовать Mprog 3.5 или аналогичное программное обеспечение для запуска EEPROM, который может поддерживать то, что я хочу делать? Если да, то как?

+0

сер = serial.Serial («com1») # так сказать? без скорости? – dsgdfg

+0

да, он инициализирует скорость передачи до 9600 по умолчанию –

+0

rs232 ** управление потоком ** устанавливает dtr = 1 активным (напряжение низкое) все время, пока входной сигнал fifo не будет таким полным, он больше не хочет, когда водитель очистит dtr , Этот сигнал не используется, чтобы говорить, что есть или нет данные на выходе fifo. (вы можете сделать что-то подобное с полудуплексным rs422/rs485). Ваша программа должна переключать сам dtr – meuh

ответ

2

TL; DR

According to the FTDI documentation конфигурации по умолчанию пин CBUS2 является TXDEN, который специально разработан для этой функции, так что просто использовать контактный CBUS2 для вашего трансивера включить.

фон

чип FTDI, безусловно, способен DTR/DSR flow control.

Но это то, когда аппаратура управляет управлением потоком сама по себе (общается с дальним концом, который может обеспечивать противодавление). Участие в программном обеспечении не требуется.

С многопроходной шиной, такой как RS485, фактическое управление потоком обрабатывается в программном обеспечении, а аппаратное обеспечение просто отправляет данные по указанию программного обеспечения.

Как вы знаете, ваш может написать написать дополнительное программное обеспечение, чтобы включить DTR, отправить данные и отключить DTR. Но это проблематично для соблюдения жесткого времени, и нет никакой реальной необходимости в этом, потому что чип FTDI имеет поддержку для включения передатчика для вас на основе того, когда вы отправляете данные. Однако эта поддержка может быть доступна или недоступна для сигнала DTR, который вы используете.

Название FTDI, которое может управлять приемопередатчиком, - TXDEN. В зависимости от используемого чипа FTDI это может быть перенаправлено на один из нескольких разных контактов.

Чтобы установить эту маршрутизацию, вы просто запускаете FT_Prog FTDI. Вы можете сканировать и анализировать текущие устройства, а затем вносить изменения с помощью графического интерфейса. Вы также можете сохранять и восстанавливать конфигурации из файлов XML. Программа покажет вам параметры маршрутизации для TXDEN.

EDIT Аскер: - Этот ответ в комплекте с следующими пунктами: -

1) Скачать MPROG 3.5 в качестве программиста для FTDI.

2) Выберите один из программируемых штифтов из любых из CBUS0 - CBUS4

3) Затем, после чтения и анализа, изменить выбранную булавку TXDEN и ударили программу

4) Есть ли необходимое оборудование соединения для TXDEN

TXDEN высока до FTDI посылает данные и сразу становится низкой и, следовательно, служит моя цель

+0

Ваш ответ был очень полезен. Я не знал, что мы можем программировать FTDI. Я все еще пытаюсь решить свою проблему по следующему пути Спасибо –

+0

Глядя на документ, я не уверен, что вы можете получить TXDEN из сигнала DTR, поэтому вам может потребоваться изменить вашу доску, чтобы использовать CBUS2. –

+0

Да, контакт TXDEN работает точно так, как я хотел, чтобы он работал. Я использовал MPROG 3.5 для программирования платы FTDI без каких-либо проблем. Сигнал DTR работает несколько иначе, но все же, он помог мне найти и в конечном итоге достичь моей цели. Благодаря тонну. –

Смежные вопросы