和大家分享一下我使用TI MCU的一些经验。
①使用
目前,在实时控制领域,如:电力电子、电源、电气传动等等,就我所了解的大部分人使用的都是TI的MCU。这其中的原因很多,就我而言主要是实验室一直用的TI的MCU,所以也就……。但用了这么久之后,我觉得TI的MCU用起来要比其他的厂商的同等MCU要更加的强大,使用起来也更加的方便。强大在于它有更多更为丰富、灵活的外设,使得CPU的负担大为减弱;方便在于TI提供的设计文档和资料要更加的全面,从外设文档到软、硬件资料。
②硬件设计
在硬件设计方面,针对每一款MCU TI基本都提供了相应的硬件设计参考和文档,以28335为例,就有《TMS320F2833x 参考设计》,里面包含了设计电路,以及OrCAD的图,同样像《Designing Analog Interface with 28xx ADC》都是很值得参考硬件文档。对于有些芯片你可能不能直接找到像28335这样的参考设计,如:28346,但是不用担心,你还可以从TI官方的开发板、评估板上获取你所需要的硬件设计电路,像28346就有《Delfino C28346 DIM168 ControlCARD》。所有这些资料都不难找,你可以在相应芯片的的一个网页上全部获得,只要你细心总可以找到需要的资料。
③软件设计
在软件上,TI对每一款芯片都提供例程,如《C2834x C/C++ 头文件和外设示例 》,这个我想大家都懂得,就不多说了。但是有一点需要提醒的就是有时候例程里面的代码也不一定全对,也有一些小的bug,所以写代码的时候自己要小心。
举个bug的例子:
在《C2833x C2823x C C++ 头文件和外设示例》--->DSP2833x_SysCtrl.c--->InitPeripheralClocks()中有几句代码:
// XCLKOUT to SYSCLKOUT ratio. By default XCLKOUT = 1/4 SYSCLKOUT
// XTIMCLK = SYSCLKOUT/2
XintfRegs.XINTCNF2.bit.XTIMCLK = 1;
// XCLKOUT = XTIMCLK/2
XintfRegs.XINTCNF2.bit.CLKMODE = 1;
// Enable XCLKOUT
XintfRegs.XINTCNF2.bit.CLKOFF = 0;
如果你想将XCLKOUT关掉,很正常的在这里令XintfRegs.XINTCNF2.bit.CLKOFF = 1 即可,但是在例程中你会发现,你改过之后XCLKOUT还是会输出,没有被关掉。导致这样的原因就是这几句话前面还差了一条语句就是:
SysCtrlRegs.PCLKCR3.bit.XINTFENCLK = 1; // XTIMCLK
如果不讲XINTF的时钟打开,对外设寄存器的操作是不会有效的。而例程中刚好将时钟开启的语句放到了配置外设寄存器的后面。
希望上面所写的这样对大家有所帮助。 |