本帖最后由 Ryanhsiung 于 2012-12-27 16:57 编辑
第一次玩SPI主模式,若连续发送多个byte(10或者40个):
PIR1bits.SSP1IF =0;
SSP1BUF = 0xBB;
while(0 == PIR1bits.SSP1IF);
最后在执行一几句后(这个不定),PIR1bits.SSP1IF 不会再为1。
条件: 0010 = SPI 主模式,时钟 = FOSC/64 使用,64分频,CLK空闲极性为高。
BF位正常、SSP1BUF正常。
测试:
1、若设置时钟 = FOSC/16 或者/4 则可正常运行。
2、手动将IF置位后,跳到下一步后,下两个byte后又会出现问题。
3、若改支SSP1BUF值后,IF可正常,下一个byte后以出现问题。
4、若发送间隔改为20us后,则也可正常运行
|