我在DP256板上运行完全正常的一段SPI程序,移植到c32上就不行了,具体情况是dp256上spi什么也不接,然后运行程序,SPI产生波形,但在C32上,外面接了一块33984和一块33389的SPI,但是2块芯片的SPI片选我都关了.然后运行SPI程序..结果卡在查询接收完成这里,但是通过观察P&E的MEMORY窗口,SPIDR = abyte;执行以后,SPISR就会变成A0(如果开SPISR的MEMORY窗口在256下也会因为该位被仿真器访问被清除,造成死循环,这里我观察的时候发现SPISR是正常变化的.而调试的时候我memory窗口没有加入SPISR,所以理论上应该过的去),请问其他用C32的朋友是否碰到过这种问题?还是我这块c32芯片的问题?
SPI程序:
void initSPI(unsigned char bauddiv) {
// SS,SCK,MOSI Output
DDRM_DDRM2= 0x0;
DDRM_DDRM3= 0x1;
DDRM_DDRM4= 0x1;
DDRM_DDRM5= 0x1;
SPIBR = bauddiv; // set SPI Rate
// enable SPI, Master Mode, select clock polarity/phase
SPICR1 = 0x50;
SPICR2 = 0x0; // as default
}
//-----------------------------------------------------------------------------
unsigned char xferSPI0(unsigned char abyte) {
SPIDR = abyte; // start transfer
while((SPISR & 0x80)==0); // wait until transfer finished
return(SPIDR); // read back data received
}
卡在黑体的地方..程序不动了
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |