搜索
bottom↓
回复: 1

马老师,想请教您一下关于SPI多机通信的问题啊。。。。。

[复制链接]

出0入0汤圆

发表于 2013-5-7 17:07:30 | 显示全部楼层 |阅读模式
马老师您好,
   最近在做SPI的多机通信的程序,一块M16(主),6块M48,刚开始弄一个M16,一个M48的程序,中断接收,发送,发现主机发送给从机的数据很正常,每次都对,但是主机接收到的从机的数据就是老是不稳定,有时正确有时错误,一直找不到原因,所以想请教您一下。
   SPDR写入数据后开始启动数据传输,移位完毕后,主从机都会产生中断,此时读出收到的从机的数据,然后再存入下一个要发送的数据,这样处理不对吗?

部分程序如下:
一个m16,一个m48部分程序,每5秒启动一次数据交换。

主机::::
void spi_init(void)

{

  unsigned char temp;
  DDRB |= (1<<DDR_SCK)|(1<<DDR_MOSI);
  DDRB &=~(1<<DDR_MISO);
  PORT_SPI |= (1<<DDR_MISO);

  SPCR = (1<<SPIE)|(1<<SPE)|(1<<MSTR)|(1<<CPOL)|(1<<CPHA)|(1<<SPR1)|(1<<SPR0); //SMSB,允许SPI中断,极PI允许,主机模式,性方式01,1/16系统时钟速率

  SPSR = 0x00;

  temp = SPSR;

  temp = SPDR; //清空SPI,和中断标志,使SPI空闲

}

#pragma interrupt_handler spi_stc_isr:iv_SPI_STC

void spi_stc_isr(void)
{
  SPI_rx_buff= SPDR; //从ISP口读出收到的字节
  NOP();NOP();NOP();NOP();
  SPI_rx_buff=0;
  if(t<9) {SPDR=0x8f;t++;}
  else {CS1;t=0;}
}

#pragma interrupt_handler timer1_compa_isr:iv_TIM1_COMPA//1s中断
void timer1_compa_isr(void)
{
//compare occured TCNT1=OCR1A
if(c_c<249)c_c++;
else c_c=0;
if(c_c%5==0)
}

从机:::

void spi_init(void)

{

  unsigned char temp;

    DDR_SPI &=~((1<<DDR_SCK)|(1<<DDR_MOSI));

    DDR_SPI |= (1<<DDR_MISO);

   SPCR = (1<<SPIE)|(1<<SPE)|(1<<CPOL)|(1<<CPHA);

  SPSR = 0x00;

  temp = SPSR;

  temp = SPDR; //清空SPI,和中断标志,使SPI空闲
}



#pragma interrupt_handler spi_stc_isr:iv_SPI_STC

void spi_stc_isr(void)
{
  SPI_rx_buff = SPDR; //从ISP口读出收到的字节
SPDR = 0xaa;
}


阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2013-5-8 19:22:14 | 显示全部楼层
抱歉,我基本上不会去改那些烂的不得了的代码。建议你先买本我的教材,先真正把一对一的SPI通信传递搞清楚。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 21:42

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表