Перейти к содержанию
    

SIM900: кривая реализация I2C для Embedded AT

ebdat7_00EnterDebugMode();

ebdat9_03SetModemdataToFL(TRUE);

ebdat9_04SetUartdataToFL(TRUE);

 

void init_uart(void)

{

FlMainUartDataFormat uartdataformat;

FlMainUartFlowControlStruct uartflowcontrol;

 

uartflowcontrol.dcebydte = FL_MAIN_UART_NO_FLOW_CONTROL;

uartflowcontrol.dtebydce = FL_MAIN_UART_NO_FLOW_CONTROL;

 

uartdataformat.uartFormat = FL_MAIN_UART_8N1_FORMAT;

uartdataformat.uartParity = FL_MAIN_UART_ODD;

 

// while(ebdat9_09ChangeMainUartBaudRate(115200)!=FL_OK){};

while(ebdat9_09ChangeMainUartBaudRate(9600)!=FL_OK){};

while(ebdat9_11ChangeMainUartDataFormat(uartdataformat)!=FL_OK){};

while(ebdat9_13ChangeMainUartFlowControl(uartflowcontrol)!=FL_OK){};

}

 

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

Изменено пользователем Romashki

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разобрался! У меня на этом порту стоит ADM485 с ногой RX/TX, так вот на 115200 работает так:

 

if(ebdat9_05GetSerialPortTxStatus()!=TRUE)return 0;

ebdat6_04WriteGpio(pin_SW_RX_TX, 1);

ebdat05_09delay(1000);

ebdat9_02SendToSerialPort((char*)pBuff, LenBuff);

ebdat05_09delay(10000);

ebdat6_04WriteGpio(pin_SW_RX_TX, 0);

 

а вот на 9600 приходила только третья часть буфера....пришлось сделать так и только тогда заработало (в смысле буфер полностью доходил):

 

if(ebdat9_05GetSerialPortTxStatus()!=TRUE)return 0;

ebdat6_04WriteGpio(pin_SW_RX_TX, 1);

ebdat05_09delay(1000);

ebdat9_02SendToSerialPort((char*)pBuff, LenBuff);

ebdat05_09delay(20000);

ebdat6_04WriteGpio(pin_SW_RX_TX, 0);

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня на этом порту стоит ADM485 с ногой RX/TX

Эх, жаль, но EAT/OCPU далеко не realtime. Задержка отрабатывается весьма приблизительно (а также и начало реальной выдачи в UART после выполнения SendToSerialPort), и если ее установить с запасом, то часть ответа теряется (например, при опросе ДУТ). Мне кажется, без простенького внешнего МК (типа PIC10), управляющего режимом RX/TX в засисимости от старт-бита, тут никак не обойтись. Возможно, кто-то решил проблему по другому?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В принципе можно поставить adm с автоопределением и не трогать эту ногу вообще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...