找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

[M051] 上位机与m0516 uart1通信时地址检测的问题

[复制链接]
跳转到指定楼层
楼主
lukang 发表于 2014-5-15 18:31:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教大伙一个问题,困扰我两天了,总感觉自己设置的没错可就是没有出现自己要的现象
是关于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会对发过来的地址无动于衷呢?  求指教 啊  愁死我了  
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 顶 踩
回复

使用道具 举报

沙发
a_ziliu 发表于 2014-5-15 21:47:05 | 只看该作者
bsp中有例子,void RS485_9bitModeSlave()
回复 支持 反对

使用道具 举报

板凳
 楼主| lukang 发表于 2014-5-15 22:33:51 | 只看该作者
a_ziliu 发表于 2014-5-15 21:47
bsp中有例子,void RS485_9bitModeSlave()

我看了BSP中的例子了,也参考了,现在的初始化就是参照他的例子来的,可以依然这样,bsp中的情况跟我这个还不是完全一样,我就用一个RS485普通模式,他初始设置的时候UART1->ALT_CSR = UART_ALT_CSR_RS485_NMM_Msk    |
                     UART_ALT_CSR_RS485_ADD_EN_Msk |
                     UART_ALT_CSR_RS485_AUD_Msk;
我跟他的差别就在我没有设置 UART_ALT_CSR_RS485_AUD_Msk,因为我不用这个模式,郁闷了
回复 支持 反对

使用道具 举报

地板
a_ziliu 发表于 2014-5-16 11:40:02 | 只看该作者
要設定位址,及開啟addrest detect
回复 支持 反对

使用道具 举报

5#
 楼主| lukang 发表于 2014-5-16 12:50:05 | 只看该作者
a_ziliu 发表于 2014-5-16 11:40
要設定位址,及開啟addrest detect

设定位址?你的意思是说将奇偶校验位选择1 或者0 么,能不能具体一些呢,谢谢了
回复 支持 反对

使用道具 举报

6#
a_ziliu 发表于 2014-5-19 22:01:03 | 只看该作者
裡面有master跟slave拿2塊板子對接,量一下波型就知道了。
M051_Series_BSP_CMSIS_Rev3.00.001\SampleCode\StdDriver\UART_RS485_Master\KEIL
M051_Series_BSP_CMSIS_Rev3.00.001\SampleCode\StdDriver\UART_RS485_Slave\KEIL
代碼不知道為什麼都貼不上
slave與位址有關的code看172-176行
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU