求助!两块DSP进行SPI通信,从机无法接收数据!
两块芯片的连接应该没有问题,SIMO、SOMI、SPICLK分别连上,从机的SPISTEA连到主机的控制GPIO口上,两块芯片也共地了,主机可以正常发送,从机无法接收,CCS在线调试时发现从机的SPI INT ENA位始终为0,如下图,SPIRXBUF中没有数据。 void main(void){
int k;
init();
init_spi();
while(1)
{
for(k=0;k<100;k++)
{
while(SpiaRegs.SPISTS.bit.INT_FLAG!=1) {}
q = SpiaRegs.SPISTS.bit.INT_FLAG;
if(k>99){k=0;}
jieshou = SpiaRegs.SPIRXBUF;
SpiaRegs.SPISTS.bit.OVERRUN_FLAG=1;
}
}
}
仿真调试时始终停在while(SpiaRegs.SPISTS.bit.INT_FLAG!=1) {} 这句话 上逻辑分析仪或示波器,先看看SPI主机发出的时序是否正确。 mohanwei 发表于 2018-10-29 14:57
上逻辑分析仪或示波器,先看看SPI主机发出的时序是否正确。
您好,用示波器看了,主机发送的时钟是正常的,SIMO引脚也有数据输出,但是从机收不到 收发要交叉一下互联吧 两个MCU都在同一块板子上吗 除了共地信号也要匹配 zhangmangui 发表于 2018-10-29 21:57
收发要交叉一下互联吧
SPI应该不用交叉,SIMO是丛收主发,SOMI是从发主收 zhangmangui 发表于 2018-10-29 21:58
两个MCU都在同一块板子上吗 除了共地信号也要匹配
是两块开发板,之间用杜邦线连着的 昨天收不到数是从机的芯片有问题,吹下来重焊就能收到了,但是现在收到的数中除了主机发出来的,还掺杂着很多别的数,这是为什么? 你可以先写一个自发自收,验证一下板子问题和连接问题 找到问题了,接收数据的时候位错开了一位到两位,比如我连续发送88,从机收到的全是11和24577,如下图,但是SPI不是同步通信吗,完全靠主机发出的时钟来发送和接收数据,为什么会错开呢? mrxj173 发表于 2018-10-30 14:25
找到问题了,接收数据的时候位错开了一位到两位,比如我连续发送88,从机收到的全是11和24577,如下图,但 ...
主从机格式不匹配,主机设置的是16位格式,从机是8位吧? 877049204 发表于 2018-10-30 15:00
主从机格式不匹配,主机设置的是16位格式,从机是8位吧?
从机也是16位,取数虽然错了,但是换算成二进制还是16位 奇怪了 两者之间不行在通讯线上串联电阻试试 错位确实不合理 片选 时钟 比较关键 对比测试一下 zhangmangui 发表于 2018-10-30 21:41
奇怪了 两者之间不行在通讯线上串联电阻试试
谢谢,串联多大的电阻比较合适? 学写了,点赞 收发要交叉一下互联吧 MinMinMin 发表于 2018-11-8 10:52
收发要交叉一下互联吧
不用交叉互联,这个问题已经解决了,最终实现了一块主机四块从机的SPI通信,谢谢大家! okok
页:
[1]