我用MC9S08DZ32的SPI与其它处理器通信,MC9S08DZ32工作在SLAVE模式,具体代码如下:
void SPI_Slave_mode_init(void){
/* SPIC1:SPIE=1,SPE=1,SPTIE=0,MSTR=0,CPOL=1,CPHA=1,SSOE=0,LSBFE=0 /
SPIC1 = 0xC4;
/* SPIC2: MODFEN=0,BIDIROE=0,SPISWAI=0,SPC0=0 */
SPIC2 = 0x00;
/* SPIBR: SPPR2=0,SPPR1=0,SPPR0=0,SPR2=1,SPR1=0,SPR0=1 */
//SPIBR = 0x04; //band rate is 125kbps,when bus rate is 4MHz
SPID = 0x55;//想在MISO端输出的数据.
}
unsigned char high;
void main(void) {
MCU_init();
SPI_Slave_mode_init();
EnableInterrupts; /* enable interrupts */
high = 0;
while(1){
__RESET_WATCHDOG(); /* feeds the dog */
delay();
}
}
interrupt 15 void VSPI_isr(void)
{
unsigned char temp;
temp = SPIS_SPRF; /* Read the SPI Status Register and, */
high = SPID;
__RESET_WATCHDOG(); /* feeds the dog */
}
这个程序接收数据是没问题的,能正确接收数据;
现在的问题是,我想在接收数据的同时,在MISO端上输出数据,比如我初始化中的0X55,在用BDM调试时,MISO端能正常输出;但是一旦让程序在目标板上跑起来,MISO端就只输出0X00.搞了两天了,没弄明白是为什么,高手给指点下,谢谢了. |