现在的位置: 首页 > 综合 > 正文

TI McBSP 串口调试心得

2013年01月17日 ⁄ 综合 ⁄ 共 3157字 ⁄ 字号 评论关闭

近日需要编写一个C6416板的串口程序,一开始打算参考TI EXAMPLES,但是TI 的 McBSP例子

都是DLB(数据回路)模式的,不能用,后来google 一下找到spra633c.pdf,看了下,从

http://www-s.ti.com/sc/techlit/spra633.zip 下载了份示例代码,代码基本可以用,

但要根据硬件的情况修改,配置McBSP 寄存器最关键下面几个地方:

1. 波特率 CLKGDV= (CLK) / (16 * baud rate) -1,   比如我这边用的是 6416 1 GHZ,主频是 960MHz,

   采用的是 CPU/4 clock for C64x DSP, 波特率采用115200,所以这里 CLKGDV= ((960 * 1000000)  / 4) / (16 * 115200) -1 = 129

   注意 CLKGDV 这个寄存器 的范围是 0-FFh(255), 所以采用低于 115200 的 波特率时这个计算值会大于255,所以

   不能使用小的波特率; 另外如果发现调试时乱码 CLKGDV的值可能还需要一些微调。

2. 寄存器RCR和XCR 的 XFIG和 RFIG 应该设为1,收发数据需要忽略桢同步,不然后出现乱码。

下面给出本人的一个配置:

 

 

3. 传输方式的选择,McBSP 通信可以CPU收发,也可以 通过EDMA 收发,如果CPU仅仅只做串口的事CPU收发没问题,

   否则 选择EDMA 收发比较灵活依靠中断来处理数据,在TI 文档中有固定的EDMA通道来专门传串口数据,比如笔者

   使用 串口 1 的情况:

 

 

        ...........

        这里一定要搞清楚 中断发生的时机,是在传输完毕时,这是根据你在EDMA配置的一次传输的字节数量。

        另外如果不定时的发数据,以下语句可以重新启动一次EDMA传输:

 

   

 

 

抱歉!评论已关闭.