CAN外设涉及的寄存器很多,我的项目中bootloader使用了CAN硬件,由于用户程序中也使用了CAN硬件,而且CAN寄存器配置不同,造成用户程序CAN硬件异常。最好的方法是将CAN外设反初始化,提供一个deInit函数,将CAN外设恢复到上电出厂状态。自己实现,寄存器一个个设置太麻烦了,能否官方提供一个简洁的反初始化函数?
笨鸟:
我偶记得系统管理中,M4和M3都有单独的外设复位寄存器的,28335也应该有这个寄存器的,你找找看看。
CAN外设涉及的寄存器很多,我的项目中bootloader使用了CAN硬件,由于用户程序中也使用了CAN硬件,而且CAN寄存器配置不同,造成用户程序CAN硬件异常。最好的方法是将CAN外设反初始化,提供一个deInit函数,将CAN外设恢复到上电出厂状态。自己实现,寄存器一个个设置太麻烦了,能否官方提供一个简洁的反初始化函数?
PINRAN LIAO:
不明白你的意思,但是28335里面有一个CAN的默认初始化函数,你可以参考一下,void InitECan(void),在DSP2833x_ECan.c中
CAN外设涉及的寄存器很多,我的项目中bootloader使用了CAN硬件,由于用户程序中也使用了CAN硬件,而且CAN寄存器配置不同,造成用户程序CAN硬件异常。最好的方法是将CAN外设反初始化,提供一个deInit函数,将CAN外设恢复到上电出厂状态。自己实现,寄存器一个个设置太麻烦了,能否官方提供一个简洁的反初始化函数?
Xiao Dong:
回复 PINRAN LIAO:
看来是没有用过STM32的外设库。
CAN外设涉及的寄存器很多,我的项目中bootloader使用了CAN硬件,由于用户程序中也使用了CAN硬件,而且CAN寄存器配置不同,造成用户程序CAN硬件异常。最好的方法是将CAN外设反初始化,提供一个deInit函数,将CAN外设恢复到上电出厂状态。自己实现,寄存器一个个设置太麻烦了,能否官方提供一个简洁的反初始化函数?
Xiao Dong:
回复 笨鸟:
C2000就不要和M3、M4比了,出来时间太久了,很多设计都过时了。
确实没有这个寄存器,我写了个函数,把初始化过的寄存器全部复位到初始化状态了。还是得自己动手。
CAN外设涉及的寄存器很多,我的项目中bootloader使用了CAN硬件,由于用户程序中也使用了CAN硬件,而且CAN寄存器配置不同,造成用户程序CAN硬件异常。最好的方法是将CAN外设反初始化,提供一个deInit函数,将CAN外设恢复到上电出厂状态。自己实现,寄存器一个个设置太麻烦了,能否官方提供一个简洁的反初始化函数?
PINRAN LIAO:
回复 Xiao Dong:
我的感觉是STM32的CAN总线模块的没有28335的好,我现在主要使用的是STM32F4和STM32F103,还有就是28335,感觉28335的CAN模块逻辑比较清晰。
CAN外设涉及的寄存器很多,我的项目中bootloader使用了CAN硬件,由于用户程序中也使用了CAN硬件,而且CAN寄存器配置不同,造成用户程序CAN硬件异常。最好的方法是将CAN外设反初始化,提供一个deInit函数,将CAN外设恢复到上电出厂状态。自己实现,寄存器一个个设置太麻烦了,能否官方提供一个简洁的反初始化函数?
Xiao Dong:
回复 PINRAN LIAO:
我的感觉刚好相反,STM32的CAN更好用一些。28335的能简单一些。但是清晰程度上没有STM32的好。
CAN外设涉及的寄存器很多,我的项目中bootloader使用了CAN硬件,由于用户程序中也使用了CAN硬件,而且CAN寄存器配置不同,造成用户程序CAN硬件异常。最好的方法是将CAN外设反初始化,提供一个deInit函数,将CAN外设恢复到上电出厂状态。自己实现,寄存器一个个设置太麻烦了,能否官方提供一个简洁的反初始化函数?
Martin Yu:
回复 Xiao Dong:
Xiao Dong,
首先,C2000有很多新的产品,F2802X~F2807x,F2837X,F28004X等等,你说的F28335是上好几代的产品了,建议看下新的产品;
再者,C2000和M3、M4的定位是不一样的,C2000是实时处理器,优势在于CPU性能,实现复杂算法的效率,以及配套支持的解决方案,如基于C2000的电机控制方案有InstaSPIN\SMO\eSMO\BLDC等;基于C2000的数字电源方案有PFC、LLC、PSFB等,还有很多针对具体应用的解决方案,如太阳能逆变、充电桩等。
所以“设计是否过时是相对的!
CAN外设涉及的寄存器很多,我的项目中bootloader使用了CAN硬件,由于用户程序中也使用了CAN硬件,而且CAN寄存器配置不同,造成用户程序CAN硬件异常。最好的方法是将CAN外设反初始化,提供一个deInit函数,将CAN外设恢复到上电出厂状态。自己实现,寄存器一个个设置太麻烦了,能否官方提供一个简洁的反初始化函数?
Xiao Dong:
回复 Martin Yu:
C2000系列我一直在关注,因为产品上使用。Piccolo系列的MCU,和28335比,功能上是有一些创新,比如CLA、VCU内部振荡器等等,不过性能上并不比28335强。2837x系列只看过datasheet,市面上使用的产品还不多。实际产品中,28335算是比较新的了,很多场合还在用更早的2812甚至2407.这些产品C28x内核是一样的,这个内核设计时间比Cortex M3 M4要早,很多理念落后一些也正常。我理解的C2000架构类似CISC,指令很多,功能很强,功耗很高,与ARM的RISC对比明显。目前主要应用场合就是电机控制和数字电源,这里面其实很多是历史原因,很多新出现的应用场合比如电动自行车控制器,平衡车控制器本来是C2000的传统强项,目前都是Cortex M3/M4的天下。至于配套支持方案,我对比过C2000和STM32的外设库,明显STM32的实现更好一些,STM32的实现可以直接编译成库使用,C2000的自己要去研究代码。
CAN外设涉及的寄存器很多,我的项目中bootloader使用了CAN硬件,由于用户程序中也使用了CAN硬件,而且CAN寄存器配置不同,造成用户程序CAN硬件异常。最好的方法是将CAN外设反初始化,提供一个deInit函数,将CAN外设恢复到上电出厂状态。自己实现,寄存器一个个设置太麻烦了,能否官方提供一个简洁的反初始化函数?
ming chen3:
回复 Xiao Dong:
同意楼上的观点~
1.Piccolo系列的MCU,和28335比,功能上是有一些创新,比如CLA、VCU内部振荡器等等,不过性能上并不一定比28335强。优势可能在性价比。
2.高端的电机控制领域,还是以TI的C2000为主,piccolo和defino。实现复杂的电机控制算法。
C2000的电机控制方案:InstaSPIN\SMO\eSMO\BLDC个人觉得是目前最为先进的,特别是InstaSpin。
3.平衡车控制器成本约束比较大,其实piccolo是可以选择的。
4.C2000新的产品,F2802X~F2807x,在架构上和28335没什么太大区别,可能新在CLA、VCU内部振荡器等。
5.外设驱动程序上,TI也提供部分开发历程,但仍然无法摆脱底层的寄存器操作。需要下一番功夫,开发效率不高。现在FAST库中历程都是采用机构体封装。
总之,选择一款MCU需要综合成本、性能、资源、算法先进性、SDK、IDE等诸多因素相关,综合考量。
CAN外设涉及的寄存器很多,我的项目中bootloader使用了CAN硬件,由于用户程序中也使用了CAN硬件,而且CAN寄存器配置不同,造成用户程序CAN硬件异常。最好的方法是将CAN外设反初始化,提供一个deInit函数,将CAN外设恢复到上电出厂状态。自己实现,寄存器一个个设置太麻烦了,能否官方提供一个简洁的反初始化函数?
Martin Yu:
回复 ming chen3:
Chris,
你对C2000的理解相当的深刻,也谢谢你对C2000的支持!
在这里再补充下,F2807x/F2837XS/F2837XD系列里面的新东西还是很多的,可以说是一个质的飞升,如200MHz的CPU、复杂算术单元TMU,16位的ADC等,还有适合伺服用的位置管理模块Position Maneger,建议可以了解下。谢谢!