McBSP采用查询方式或CPU中断方式进行UART通信,程序执行后一直停留在: while(!(MCBSP_rrdy(hMcbsp1))); //wait for reciev ready
调试了好几天,不知道什么原因?请大神支招
1、通信原理:
C6000将每个UART位当作16b数据。内部采样率发生器被配置为产生一个16倍于串口波特率的时钟。由于UART起始位是一个下降沿,因这个下降沿可心作为帧同步的输入,因此,FSR和DR都被连接到UART的输出Tx。
为了防止MCBSP被重复触发,在开始接收数据后需要忽略所有的帧同步信号。
使用8N1(8数据位1停止位,无校验)方式发送UART数据
2、MCBSP配置:
MCBSP_Config mcbspCfg1 = {0x0,0x81050840,0x81050840,0x20000079,0x0,0x0,0x0,0x00000B0C};
/*SPCR=0x0
Receive Control Registers (RCR) RCR = 0x81050840
Transmit Control Registers (XCR) XCR = 0x81040840
Sample Rate Generator Register (SRGR) SRGR = 0x20000079
CLKGDV= (CPU Clock frequency) / (16 * baud rate) -1.
//CPU频率为225MHz,波特率为57600 */
目前将DX与DR、FSR短接,看自发自收的情况,结果仍然在:while(!(MCBSP_rrdy(hMcbsp1))); 都快疯掉了,急寻大神支招!!!
Shine:
参考下面的application note的例程。
http://www.ti.com/lit/an/spra633c/spra633c.pdf