最近一款基于LPC2387方案的产品要用到RS485通信,查了下datasheet,LPC2387的Uart没有内置RS485功能,故只能采用电平转化了。最后选择了MAX485和英联的UM3085,两款芯片管脚兼容,都能进行TTL和RS485转化。
因为采用半双工通信,所以用一个GPIO口同时控制DE和RE,某一刻只能是接收或发送。LPC2387的TXD1和RXD1分别和485的DI和RO连接。
//RS-485收发控制示意代码,和普通串口通信相比多了485芯片的发送/接收使能设置
#define RS485_DE_RE (0x01<<9) //GPIO P0.9控制DE,RE
/*********************************************
****** 使能RS485发送
*********************************************/
void Enable_RS485_Tx(){
FIO0DIR |= RS485_DE_RE; //GPIO Dir Out
FIO0SET = RS485_DE_RE; //P0.9输出高电平,DE为1,RE为0
}
/*********************************************
****** 使能RS485接收
*********************************************/
void Enable_RS485_Rx(){
FIO0DIR |= RS485_DE_RE; //GPIO Dir Out
FIO0CLR = RS485_DE_RE; //P0.9输出低电平,DE为0,RE为1
}