各位论坛朋友:
问题原因已经找到并解决,寻找原因的过程漫长且绕了弯,我简化它让大家易于理解,防止同样的错误。
首先感谢安富利的鹿经理协助我整理思路,并提供了一些有效的测试手段。
同时也谢TI工程师Mark Mckeown的帮助。
我正在开发的产品中,DSP芯片TMS320C5535受ARM芯片STM32f103VG控制。
现在要通过5535芯片ROM中厂家的引代码来烧写DSP的引导代码。依据为:http://www.ti.com/lit/an/sprabl7c/sprabl7c.pdf
工作的目标是:通过ROM中的引导代码,将自己的Boot Image 加载到芯片 RAM 中并运行。
一开始就没成功过一次,下面三图是失败时的波形图(每一毫秒传送一个字节内容):
DSP pin: P13 UART-RxD / I2S3-Rx / GP30 的波形图
DSP pin: N12 UART-RTS / I2S3-CLK / GP28 的波形图
测量的都是数据传送过程中随机抓的时间点,看起来都没有毛病,如下图所示,波特率也是正确的
后来改装了自己的开发板,由PC直联DSP传送数据成功。
开始也是中间抓波形,同样没发现RxD上的不同,只是发现了RTS脚的不同(RTS脚在传送过程中低电平,直到传送完成后才拉高保持高电平)
最后想到抓起始波形可以定量分析,终于发现了问题。(起始字符为 09 AA)
正确的波形是这样的:
错误的波形是这样的:
有比较才有伤害,终于打破迷局,通过修改ARM端代码解决了问题。
Shine:
回复 Tony Tang:
建议先写一个简单的小程序看一下串口是否能正确加载?