原创 c8051f020系列学习-----SPI篇

2008-11-18 14:59 3438 13 13 分类: MCU/ 嵌入式

硬件简介: 


          C8051F020器件是完全集成的混合信号系统级MCU芯片(SOC),它使用Cygnal的专利CIP-51微控制器内核,CIP-51与MCS-51指令集完全兼容。它采用流水线结构,与标准的8051结构相比指令执行速度有很大的提高。CIP-51提供了22个中断源,允许大量的模拟和数字外设中断微控制器,因而有更高的执行效率。具有64个I/O引脚,每个端口都可以配置成推挽或漏极开路输出。C8051F020 MCU内部有一个SMBUS/I2C接口、两个具有增强型波特率配置的全双工UART和一个增强型SPI接口,每种串行总线完全用硬件实现,都能向CIP-51产生中断。它内部有一个12位的ADC0,该子系统包括一个9 通道的可编程模拟多路选择器(AMUX0),一个可编程增益放大器(PGA0)和一个100ksps、12 位分辨率的逐次逼近寄存器型ADC,ADC中集成了跟踪保持电路和可编程窗口检测器;一个8位的ADC1,包括一个8 通道的可配置模拟多路开关(AMUX1),一个可编程增益放大器(PGA1)和一个500ksps、8 位分辨率的逐次逼近寄存器型ADC。两个12位的DAC转换器,每个DAC 都具有灵活的输出更新机制,允许无缝的满度变化并支持无抖动输出更新。C8051F020还有5个通用的16位定时器和5 个捕捉/比较模块的可编程计数器/定时器阵列。


        设置交叉开关表将P0.2、P0.3和P0.4引脚配置为SPI接口, 其主要函数:


void SendSPIByte(unsigned char ch)  // 通过SPI发送一个字节数据


{


         SPIF = 0;                   // SPIF位清零


         SPI0DAT = ch;              // 启动一次数据发送


         while (SPIF == 0);                // 等待数据发送完毕


}


unsigned char GetSPIByte(void)    //通过SPI接收一个字节数据


{


    SPIF = 0;                  // SPIF位清零


         SPI0DAT = 0;              //启动一次数据接收


         while (SPIF == 0);          // 等待数据接收完毕


         return  SPI0DAT;          // 读取SPI接收到的数据


}


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
13
关闭 站长推荐上一条 /1 下一条