|
问题如下:
最近开始在使用Dsp 2812的CAN module 目前CAN Transceiver电路已经完成 用的是Ti的SN65hvd230 最近开始在测基本传送程序 用的是 TI所提供的范例程序 如下连结(改里面的TX_LOOP) http://focus.ti.com/docs/apps/catalog/resources/appnoteabstract.jhtml?abstractName=spra876a 但发现 里面的程序都是#include "DSP28_Device.h" 因为我实验室其它同学宣告都是用#include "DSP281x_Device.h" 所以要配合他们 之后又下载Download C281x C/C++ Header Files and Peripheral Examples 如下连结 http://focus.ti.com/docs/toolsw/folders/print/sprc097.html
里面的DSP281x_有一个ecan_back2back范例,我就以此Project来改程序,依照之前在http://focus.ti.com/docs/apps/catalog/resources/appnoteabstract.jhtml?abstractName=spra876a 下载的程序在ecan_back2back Project底下改 程序是TXLOOP_11.c 文件如下 ecan_back2back.rar
小弟把程序原先在#include "DSP28_Device.h"下的所有东西都改成 在#include "DSP281x_Device.h"可以执行 但 真正执行后 小弟利用单步追踪 发现缓存器都不能存取(写入值后都没改变) 例如: /* Configure bit timing parameters */
ECanaRegs.CANMC.bit.CCR = 1 ; // Set CCR = 1
while(ECanaRegs.CANES.bit.CCE != 1 ) {} // Wait for CCE bit to be set.. ECanaRegs.CANBTC.bit.BRPREG = 19; ECanaRegs.CANBTC.bit.TSEG2REG = 2; ECanaRegs.CANBTC.bit.TSEG1REG = 10;
ECanaRegs.CANMC.bit.CCR = 0 ; // Set CCR = 0 while(ECanaRegs.CANES.bit.CCE != 0 ) {} // Wait for CCE bit to be cleared..
小弟有用单步追踪 且用GEL的Watch ECAN Registers看 缓存器的变化 CANBTC缓存器里的值 完全没变 值一直保持在0且程序执行动作就卡在 "while(ECanaRegs.CANES.bit.CCE != 0 ) {} // 这行
Data Sheet有写 若BTC缓存器的值为0则DSP不能跳出ECAN的初始化模式. 前面的一些缓存器 像是CANTA CANRMP 等等 值也都写不进去
这是把原先在#include "DSP28_Device.h"底下硬改成 #include "DSP281x_Device.h" 时没改好吗? 但 Compile和Build都没错且可执行.
解答如下:
首先,如果你认为是DSP28_Device.h 换成DSP281x_Device.h的问题,那可以直接去比较一下两个档案里面的差异,不过我觉得28系列的整个宣告结构好像都差不多。除了检查两者针对Register控制的结构有无不同之外,重要的是要检查一下Register的对应一不一样,要确定说ECanaRegs是宣告在跟你硬件IO一样的地址
另外,如果你从范例程序直接改有问题的话,那何不试试直接跑范例程序呢,至少范例程序基本的功能都有说明了,如果你直接跑范例程序也是有问题的话,那就有可能是其它地方的问题了。
问题如下:
刚刚听从您的建议,先直接跑原始的范例程序 范例来源 如下: http://focus.ti.com/dsp/docs/dspsupporttechdocsc.tsp?sectionId=3&tabId=409&abstractName=spra876a
Programming Examples for the TMS320F281x eCAN (Rev. A) 标题是写TMS320F281x eCAN 但里面程序却都是"DSP28_Device.h" 而不是"DSP281x_Device.h"
解压缩产生档案在开启TXLOOP.pjt这个档 但Compile和Build后居然显示 Fatal error: could not open source file "DSP28_GlobalVariableDefs.c" 1 fatal error detected in the compilation of "DSP28_GlobalVariableDefs.c". Compilation terminated. "TXLOOP.c", line 14: fatal error: could not open source file "DSP28_Device.h" 1 fatal error detected in the compilation of "TXLOOP.c". Compilation terminated. Build Complete, 3 Errors, 0 Warnings, 0 Remarks.
但 TI所提供的范例程序,居然少三个文件
解答如下:
找了 两个多小时 终于找到了 这网页有相关文件 http://focus.ti.com/dsp/docs/dspsupporttechdocsc.tsp?sectionId=3&tabId=409&familyId=510&abstractName=slaa167
留给之后玩2812 CAN Module的人
|