打印
[ZLG-ARM]

有关M0的485从机通讯的问题

[复制链接]
1854|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jjt1975|  楼主 | 2010-8-25 16:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
那位高手帮忙看看,下面的代码。我要做一个485的从机通讯程序 。现在设置好以后,发送地址帧 pariy_bit=1 的数据“05” 进不了中断。

    INT16U usFdiv;
    SYSAHBCLKCTRL |= (1ul << 12);
    UARTCLKDIV     = 0x01;
    U0LCR  = 0x83;
    usFdiv = (FAHBCLK / UARTCLKDIV / 16) / UART_BPS;
    U0DLM  = usFdiv / 256;
    U0DLL  = usFdiv % 256;
    U0LCR  = 0x03;
    U0FCR  = 0x07;
    U0IER  = 0x01;
    U0RS485CTRL=0x07;    //自动检测地址状态
    U0ADRMATCH=0x05;   //默认地址为 5  实际应用时应设置为设备的实际地

如果去掉最后面的两条语句则可以正常中断。只是数据帧,地址帧都会产生中断。如果挂在总线上,区分不了地址和数据那基本没法用啊。有没有用M0做过485总线通讯的的高手帮忙指点一下。

相关帖子

沙发
jjt1975|  楼主 | 2010-8-25 16:54 | 只看该作者
测试发现,要把U0LCR 中的parity enable 使能以后 U0RS485CTRL=0x03 则发送地址帧中断,数据帧不中断。但是U0RS485CTRL=0x07 时自动地址识别功能不起作用。

使用特权

评论回复
板凳
jjt1975|  楼主 | 2010-8-25 17:23 | 只看该作者
搞定。自己的帖子自己结:)   

要使能地址,数据帧的识别功能:U0LCR 中的parity enable 位必须使能"1"。
U0RS485CTRL=0x07    设置485地址识别的工作模式。
U0ADRMATCH=0x05    写入设备的地址。
原先调试的时候忽略了一个问题,当M0检测到一个地址帧并且地址帧内容与U0ADRMATCH一致。则产生中断。
同时U0RS485CTRL中的RXDIS位会自动清零。以后不管发送什么数据都会产生中断。只有手动将其置”1“以后可以重新进入地址检测状态

使用特权

评论回复
地板
linux1| | 2010-8-29 15:31 | 只看该作者
校验位必须使能是吧?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

37

帖子

0

粉丝