LPC1769 as RS485 slave device

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

LPC1769 as RS485 slave device

1,902件の閲覧回数
kalpeshbalar
Contributor II

Hi, I am trying to use LPC1769 as RS485 slave device. And LPC11C14 used as master device.

Attached are master and slave program files.

 

If I enabble RECEIVER_ALWAYS_EN = 1 in slave then I am able to recive data on slave from the master.

But when I enable AUTO_SLVADDR_DETECT=1 in slave, I am not geting any data from master to slave.

What clould be wrong in attached master slave programs?

 

Thanks,

KBalar

Original Attachment has been moved to: master.c.zip

Original Attachment has been moved to: slave.c.zip

ラベル(3)
タグ(2)
0 件の賞賛
返信
2 返答(返信)

1,409件の閲覧回数
kalpeshbalar
Contributor II

Hi Carlos,

The master is already setting parity to 1 while sending the address. Please refer below code to send address from master. (Please refer attached code in main post.)

uint8_t tmp, save;

save = tmp = LPC_USART->LCR & UART_LCR_BITMASK;
tmp &= ~(UART_LCR_PARITY_EVEN);
LPC_USART->LCR = tmp;

if (addr_toggle){
Chip_UART_SendBlocking(LPC_USART, (void*)SLAVE_ADDR_A, 1);
} else {
Chip_UART_SendBlocking(LPC_USART, (void*)SLAVE_ADDR_B, 1);
}

while (!(LPC_USART->LSR & UART_LSR_TEMT));
LPC_USART->LCR = save;

What could be the problem?

Thanks,

KBalar

0 件の賞賛
返信

1,409件の閲覧回数
Carlos_Mendoza
NXP Employee
NXP Employee

Hi KBalar,

When in Auto Address Detection (AAD) mode the receiver will compare any address byte received (parity = ‘1’) to the 8-bit value programmed into the RS485ADRMATCH register so please make sure the UART master transmitter is correctly identifying the address character by setting the parity (9th) bit to ‘1’ and that the parity bit is set to ‘0’ for data characters.


Hope it helps!

Best Regards,
Carlos Mendoza
Technical Support Engineer

0 件の賞賛
返信