This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C5535串口引导代码不能正常工作

Other Parts Discussed in Thread: TMS320C5535

各位论坛朋友:

     问题原因已经找到并解决,寻找原因的过程漫长且绕了弯,我简化它让大家易于理解,防止同样的错误。

    首先感谢安富利的鹿经理协助我整理思路,并提供了一些有效的测试手段。

    同时也谢TI工程师的帮助。

    我正在开发的产品中,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端代码解决了问题。

  • Zenger Zeng 说:

    6)让传送过去的代码有足够时间运行

         按文档指导,传完数据后等待 200 毫秒不动作,传送过去后的代码就会被运行起来。

         实际上每次都等上一分钟以上才能进行下一步检测(通常一分半钟)。

    你不是说都运行起来了吗?如何判断的?

    另外,你可以通过load symbol方式来看boot起来的程序状态。 

  • 建议先写一个简单的小程序看一下串口是否能正确加载?