TI中文支持网
TI专业的中文技术问题搜集分享网站

能否提供一个28335平台下CAN模块的反初始化函数?

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,建议可以了解下。谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » 能否提供一个28335平台下CAN模块的反初始化函数?
分享到: 更多 (0)