最近在用F28027在调试SPI,用的是TI的例程,文件名spi_loopback_interrupts,调试时主要有两个问题:
1.当工作在FIFO中断模式,单步调试时,当执行到发送中断函数时,执行这条语句SpiaRegs.SPITXBUF=sdata,SpiaRegs.SPIFFTX.bit.TXFFST始终为0,为什么???我是向FIFO中写数据,但是它始终为0,相反,SpiaRegs.SPIFFRX.bit.RXFFST的值在不断变化,显示接收到数据。好像是写一个发一个???并没有预先存到FIFO中这个过程,而且进入中断后TXFFINT会置位为1,但是当执行完SpiaRegs.SPIFFTX.bit.TXFFINTCLR=1;这条语句后TXFFINT并没有清0?为什么???
2.当执行for(;;)循环时,第一次进入发中断是怎么产生的?还有产生中断的条件很奇怪啊?TXFFST与TXFFIL匹配时,又说是小于等于时,那只要是FIFO中的数据个数小于设定的TXFFIL就会中断,不一定是等于的时候???第一次产生中断的条件是因为FIFO中没有数据,所以TXFFST是0,小于设定的值TXFFIL=2,所以才进入中断的吗?
3.关于进入发送中断后的操作,仍然是这条语句SpiaRegs.SPITXBUF=sdata,我理解接收中断的方式是,数据已经接收到,然后进入接收中断服务程序,把FIFO中的数据存入自己定义的数组,所以发送中断应该是数据发送完后才进入中断的啊???但是这条语句的意思应该是进入中断后才开始向FIFO中写数据???而且写入的数据在TXFFST中并没有显示出来(第一个问题)???
|
4. |