`
tibaloga
  • 浏览: 870406 次
文章分类
社区版块
存档分类
最新评论

新唐cortex-m0之RS485通讯

 
阅读更多

又有好久没有更新博客了,不要认为我又去偷懒了,因为笔者开学了,但是我的新唐的学习并没有结束。这么长时间没有写博客因为我在学习的过程中又遇到了纠结的问题,这个问题从9月1日到现在快三个星期了,就是RS485通讯,特此写下自己的错误,避免看到文章的人再走弯路。

如果大家用的新唐的板子的话,而又要用485通讯功能,一定会去参考自带的UART_DEMO示例程序。新唐的实例程序分为两种类型,一种就是寄存器版本的,一种叫做API版本的。如果用API写程序的同仁们,一定会非常欣慰,因为这个示例程序就是485的,只要改改就行了,而用寄存器版本写程序的一定非常苦恼(笔者就是一直用寄存器版本的写程序),因为它就是一个普通的UART通讯功能,很多人会想着看看API的版本的,慢慢翻译成寄存器版本的,但是两者有些区别,经过这两天的深入,我已经把API版本改成了寄存器版本,改的是面目全非,因为我的初始化代码几乎和API的版本的一样,但是它能运行出结果,而我不行,这如何不叫人纠结呢?

在新唐的两个版本中,有这样两个区别,大家需要注意的:

1.API版本中,用的UART时钟是内部的22MHZ的晶振,大家一定看到了算晶振的波特率的函数,所以没有深入看,只知道可以得出自己想要的晶振就可以了(一般用9600的波特率),而寄存器版本中用的还是外部的12MHZ晶振

2.第二个不同的地方也是我纠结了3个星期终于发现了,也是我的问题所在的,就是API版本中,配置了管脚为RTS0功能,而寄存器版本中没有,所以即使后面初始化和API非常相似,也出不来结果,这是一个很重要的原因!(RTS0功能就是自动方向控制,是485中用来控制收发的)

解决了这两个问题,485通讯来说,基本就可以平坦大道了,但是这样说也许很空虚,下面附上485的电路图和485初始化的寄存器版本的代码,希望对大家有帮助,只是新唐Cortex-M0的代码,如果不是这个芯片的可以看看步骤,应该也没有什么太大问题。

如下图就是RS85通讯的电路图:

下面是代码部分:



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics