打印

DZ32的SPI问题

[复制链接]
2322|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
swainliu|  楼主 | 2009-7-30 22:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
spi, TE, ST, pic, ISO
我用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.搞了两天了,没弄明白是为什么,高手给指点下,谢谢了.

相关帖子

沙发
swainliu|  楼主 | 2009-7-31 08:57 | 只看该作者
怎么没人回复啊?

使用特权

评论回复
板凳
ccat| | 2009-9-1 15:03 | 只看该作者
写SPID之前要读SPIS.
BDM mode下BDM会去读所有register,因此数据可以写入

使用特权

评论回复
地板
张明峰| | 2009-9-1 15:52 | 只看该作者
interrupt 15 void VSPI_isr(void)
{
   (void)SPIS_SPRF;   /* Read the SPI Status Register and, */
    high = SPID;  /*Get the data received from master*/
    SPID = 0x55; /*send out 0x55 to master in next round*/
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

44

帖子

0

粉丝