void writeREG(Uint16 valu)
{ SpiaRegs.SPITXBUF=valu;
while(SpiaRegs.SPISTS.bit.INT_FLAG!=1)
{}
SpiaRegs.SPIRXBUF=SpiaRegs.SPIRXBUF;
}其中whlie循环总是跳不出来是为什么啊?
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.
void writeREG(Uint16 valu)
{ SpiaRegs.SPITXBUF=valu;
while(SpiaRegs.SPISTS.bit.INT_FLAG!=1)
{}
SpiaRegs.SPIRXBUF=SpiaRegs.SPIRXBUF;
}其中whlie循环总是跳不出来是为什么啊?
我用它发送数据,发送完标志位就应该变为1了吧,为什么没有变呢?是用的Loop Back模式,还是不太明白原因到底在哪,是 硬件方面的问题吗?
Loop back是芯片内部连到一起的。
具体的楼主跑的是历程么?
跑的是我自己写的程序,用spi和ADS1298R通信的,一直调不通,我也不太清楚是哪的问题。就是把指令用spi发给芯片就行了,但是一直出问题,写不进去,检查了芯片也没有问题,程序上不晓得哪错了
楼主先跑一下TI的SPI的Loopback历程,确认一下硬件和芯片的Loop Back功能是没有问题的。
然后再对照自己的程序修改。
依照您的建议,我跑了下例程,没有问题。但是我用示波器观察发送引脚的数据和时钟,发现数据发生了左移,这是为什么啊?
Shimeng Qian 说:依照您的建议,我跑了下例程,没有问题。但是我用示波器观察发送引脚的数据和时钟,发现数据发生了左移,这是为什么啊?
您好!
那就是极性的问题,看一下从机上的极性,两边要设置成一样!
依照您的建议,我跑了下例程,没有问题。但是我用示波器观察发送引脚的数据和时钟,发送数据的峰峰值只有500mv,显然是不对啊,之前没有这种现象。。
举个例子:你得让SPI 主机知道在上升沿发送还是在下降沿发送数据,是在上升沿读取数据还是下降沿读取数据。同样,得根据ADS1298R的数据手册来确定具体的极性了。