请教大伙一个问题,困扰我两天了,总感觉自己设置的没错可就是没有出现自己要的现象
是关于M0516的uart串口的RS485普通模式操作问题,这里我是想把M0516做成从机,接受上位机传来的地址和数据,我对uart1的设置如下:
UART1->FUN_SEL = UART_FUNC_SEL_RS485;//设置uart1为RS485模式
UART1->BAUD = UART_BAUD_MODE2 | UART_BAUD_DIV_MODE2(4, 1200);//4M的晶振设置波特率为1200
_UART_SET_DATA_FORMAT(UART1, UART_WORD_LEN_8 | UART_PARITY_NONE | UART_STOP_BIT_1)//8位字符长度,无校验,一位停止位
UART1->FCR = UART_FCR_RTS_TRI_LEV_1BYTE
| UART_FCR_RFITL_1BYTE
| UART_FCR_RX_DIS_Msk;///
UART1->ALT_CSR = UART_ALT_CSR_RS485_ADD_EN_Msk |
UART_ALT_CSR_RS485_NMM_Msk ;///使能uart1为RS485普通模式,使能地址识别
我设置的目的是开始只让uart1只接受上位机传来的地址,然后我在逻辑程序中判断地址是否正确
所以在上位机传入地址时我用查询的方式判断是否接收到地址字节
while(!((UART1->ISR & UART_ISR_RLS_INT_Msk) && (UART1->ISR & UART_ISR_RDA_If)))//如果收到有效地址UART1->ISR 的RLS位和RDA位会置1
这样就相当于我一直等待上位机的地址过来,可是问题是:无论我的上位机怎么发地址,这边都没反应啊,查询中断状态 RLS位始终不置1 啊
我用示波器看上位机发过来的地址,没有错,第九位地址为确实是为1的 比如我发地址85 发过来的就是 0101 0101 1
为什么么uart1会对发过来的地址无动于衷呢? 求指教 啊 愁死我了 |