最近使用STM32与DSP的HPI进行通信,可是一直都没能通信成功,不知道是那里有问题对HPIA、HPIC、HPID读写都不正确,不管写什么,读出来都是00.这个通信需要DSP先进行设置嘛?在操作前是不是要先要对HPIC进行初始化?那个有更多STM32与DSP通过HPI通信的成功例子?过来指点一二?多谢了
Shine:
请问你用的是哪款DSP?
zhe zhang:
回复 Shine:
DSP用的是5502,控制芯片用的是STM32103RB,分别测试DSP工作时的读取和不工作进的读取?结果都不对
zhe zhang:
回复 Shine:
我用显波器测试了一下,好像连接HINT引脚的线一直是高电平?这个是怎么回事呢?没能成功不会是因为这个原因吧?这个该如何解决呢?
Shine:
回复 zhe zhang:
如果DSP没有写HPIC中断标志位, HINT引脚一直高电平正常啊, HINT引脚是低电平有效. 看一下HPIENA管脚有没有拉高使能HPI接口?你用的是multiplexed mode还是non multiplexed mode? 看一下GPIO6管脚电平对了么?host要在DSP跑起来后才能访问HPI口, 具体见数据手册第51页上的说明.A host must follow one of these two requirements before initiating transfer requests from the HPI:1. Keep the HPIENA pin low until the internal reset signal has been deasserted.2. Keep the HCS, HDS1, and HDS2 pins inactive until the internal reset signal has been deasserted.另外, host提供的时序要满足数据手册第172页上的读写时序. http://www.ti.com/lit/ds/symlink/tms320vc5502.pdf
zhe zhang:
回复 Shine:
我的硬件设计时,HPIENA直接是接的高电平,GPIO6也是拉高的,采用的是复用的8位HPI,时序也是看的手册上写的,SHTBR的下降沿时采集控制信号,而SHTBR的下降沿是由HDA2和HCS(我的HDA1硬件是直接拉高的,就是在HDA2变为低电平时产生下降沿)。我看到有人说读写的采集控制信号的触发不同嘛?不是应该都是在SHTBR下降沿采集的嘛?
Shine:
回复 zhe zhang:
读写的采集控制信号触发一样啊, 都是下降沿采控制信号, 上升沿采数据信号, 这些在数据手册的读写时序都标明了.
如果用HAS信号的话, 在HAS下降沿采控制信号, 上升沿采HD数据线, HAS信号要先于HSTRB信号.如果不用HAS信号, 在HSTRB下降沿采控制信号, 上升沿采HD数据线
zhe zhang:
回复 Shine:
我的HAS硬件上是直接拉高的,我把我的代码贴上,你抽时间看下,应该是没有问题的?
Shine:
回复 zhe zhang:
最好把时序贴出来, 这样更直观一点, 这样你可以根据时序中的问题修改相应的host代码.
zhe zhang:
回复 Shine:
我现在就是不知道怎么样才能把它的时序图记录下来?Keil软件可以实现嘛?在用HPI时,需要先对它的HPIC 寄存器进行设置不?不写HPIC应该它就是默认的设置吧,是新手,具体的一些操作真的不太懂
Shine:
回复 zhe zhang:
时序可以让你的硬件工程师帮忙抓一下.