笔者在项目中同时使用过两种DSP,一种是28069,另一种是28377D,这两个DSP主要是进行CAN通讯功能,完成整个系统的非实时通讯功能。
今天笔者主要想讨论的是28069与28377D的CAN外设,这两个DSP虽然都是Ti的,但CAN外设的架构却不相同,寄存器设置也不相同。
打开28069参考手册,你会发现CAN的架构是下图中的这个样子:
然后我接着看了其他的C28x系列的DSP比如:2812、28335,发现
其CAN的架构都与28069相同,如果读者有疑问,可以亲自验证这几种DSP的CAN架构。
但28377D的CAN架构却发生了变化:
其寄存器设置也与28069有了很大的差别。
在配置CAN外设方面,28069的CAN可以通过寄存器进行操作,而28377D的需要用
HWREG(x)对硬件进行访问,即直接访问寄存器的绝对地址,这导致编程难度又增加了。
一般对于CAN外设的配置分为以下几个方面:
- CAN的初始化
- CAN的IO引脚配置
- CAN的波特率配置
- CAN的故障复位
- CAN的发送函数
- CAN的接收函数
28069的CAN配置基本与2812类似,可以参考《手把手教你学DSP--基于TMS320X281x》这本书上的内容。
28377D与28069的CAN具体代码可以到我的账号上下载。