я новичок в программировании ARM, раньше все больше на Atmega программировал
начал разбираться с UART, брал стандартные примеры от Keil, но возникли непонятные проблемы. Сразу оговорюсь - на выходе с Уартов стоят изолированные RS485 - на каждый уарт свой изолированный ADM485.
Весь фокус в том что с одного на другой уарт с RS485-ми все нормально отсылается и принимается. А если послать пакет например на UART0 и ответить на этот же UART с контроллера - информация приходит искаженной, словно где то режется байт или не переключается какой то регистр...
вот пример как я отправляю пакет в шину RS485 (UART0)
Код: Выделить всё
void RS485_Send_Polling(uint32_t portNum, uint8_t *BufferPtr, uint32_t Length)
{
uint32_t i;
if (portNum==0)
{
//Переключаем на передачу
LPC_GPIO2->FIOSET = 1UL<<8
for ( i = 0; i < Length; i++ ) {
// Ждем освобождения места в буфере передачи
while ( !((LPC_UART0->LSR>>LSR_THRE_BIT) & 1) );
LPC_UART0->THR = *BufferPtr++;
}
while ( !((LPC_UART0->LSR>>LSR_TEMT_BIT) & 1) );
//Переключаем на прием
LPC_GPIO2->FIOCLR = 1UL<<8
}
...
}нет ли у кого примеров правильной работы LPC1768 c RS485? (в инете искал - но там все больше идет обсуждение нерабочих UART а про RS485 практически ничего нет или есть но советуют UART1)
Я знаю что есть UART1 и он завязан на RS485, но для задачи необходимо использование все 4-е уарта.



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