专栏中心

EEPW首页 > 专栏 > STC系列单片机的 硬件SPI调试成功

STC系列单片机的 硬件SPI调试成功

发布人:0750long 时间:2010-02-01 来源:工程师 发布文章

 

 

        一直以来用的是模拟方式的SPI,但是速度实在有限,能达到700K就不错了,而硬件SPI可以达到3Mbps。

        查看了datasheet和demo程序(汇编),想改写为C语言的,不过一直有bug,时不时接不着

而且主机能给从机发送数据,从机可以顺利接受,但是从机返回到主机的程序,主机无法接收。

       连续两天没有解决这个问题!

       其中不乏看了些论坛上大虾们的程序,关于STC的硬件SPI程序不多,大多数是软件模拟实现的。

程序改写过程中出现的问题:

1、中断方式要注意:主机的写SPI函数开关中断要及时,判断结束后要在SPSAT清零前打开中断!

 void SpiWrite(unsigned char b)

  EADC_SPI = 0;     //关掉ADC_SPI共享中断
     SPDAT = b;      //发送数据
     while(!(SPSTAT & 0x80) );  //等待发送完毕 SPIF = 1
  EADC_SPI = 1;     //打开中断
  SPSTAT = 0xC0;     

}

////////////////////////////////////////////////////中断读

adc_spi_interrupt(void) interrupt 5  {

 SPSTAT = 0xC0;
  bchar = SPDAT;

 spi_packet = 1;
}

/////////////////////////////////////接受数据包的时候,注意要先写一个字节(0xFF)随便

void RxPacket(void)    /////////////nRF905射频收发器的接受函数
{
    unsigned char i;
    i="0";

 while(DR)
 {
 SpiWrite(0xFF);
 while(spi_packet)
    { 
        TxRxBuffer[i] = bchar;
  i++;
  spi_packet=0;
    }
 }

}

先吃饭了,回来写

 

 

///////////////////////////////////////////////////

最近在上海找工作,一时忘记了这未完的日志,续写(时间有限,直接贴程序)

///////////////////////////////////////////////////

2、最多的时候还是使用查询方式比较方便,程序简单,读写一体:

unsigned char SpiWrite(unsigned char spidata)////////注意读的时候,也要写一个字节
{  
 SPSTAT=0xC0;
 SPDAT=spidata;
 while(!(SPSTAT & 0x80));
 return SPDAT;
}

 

//////////////////////////////////////

在此特别感谢广西民族大学的hebei,一语点醒,让我解决了这个问题。

“SPI就是挤过来挤过去”

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

一卡多号读卡器电路原理图

Andrea Gallo:2025年加速技术进程与RISC-V应用推广

硅谷的成功因素是什么

视频 2012-05-28

硅MEMS:加速时序市场创新

视频 2012-05-28

基于BP神经网络的PID控制器的研究与实现

真空炉温度模糊PID复合控制

RISC-V中国峰会现场发布多项重磅级生态合作

结合RTC实现的“智能定时任务系统”:设计与实战

鼠标电路原理图

资源下载 2007-12-30

混合信号电路在纳米时代的挑战

串口转红外的电路

面向嵌入式设备的开源AutoML正式发布——加速边缘AI创新

产品级的按键输入系统设计:去抖、识别与状态机实践

RISC-V中国峰会 戴伟民回顾上海与RISC-V结缘史

Jim Keller:面向未来智能的开放计算,融算于开、慧启未来

可调谐RF趋势

视频 2012-05-28

MEMS代工趋势

视频 2012-05-28

TDK连续第五年助力iCAN大学生创新创业大赛,吸引中国新人才

RISC-V之父Krste Asanovic:联合创新加速RISC-V生态成功

2025 RISC-V中国峰会上海召开 上海市委常委副市长陈杰致辞

更多 培训课堂
更多 焦点
更多 视频

技术专区