好文档 - 专业文书写作范文服务资料分享网站

MSP430系列单片机模拟SPI串行口

天下 分享 时间: 加入收藏 我要投稿 点赞

MSP430系列单片机模拟SPI串行口

1、SPI总线简述

SPI(Serial Peripheral Interface串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置包括FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOST和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT或INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。由于SPI系统总线一共只需3~4位数据线和控制即可实现与具有SPI总线接口功能的各种I/O器件进行接口,而扩展并行总线则需要8根数据线、8~16位地址线、2~3位控制线,因此,采用SPI总线接口可以简化电路设计,节省很多常规电路中的接口器件和I/O口线,提高设计的可靠性。由此可见,在MCS51系列等不具有SPI接口的单片机组成的智能仪器和工业测控系统中,当传输速度要求不是太高时,使用SPI总线可以增加应用系统接口器件的种类,提高应用系统的性能。

2、MSP430系列单片机

MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗、具有精简指令集(RISC)的混合信号处理器。称之为混合信号处理器,是由于其针对实际应用需求,将多个不同功能的模拟电路、数字电路模块和微处理器集成在一个芯片上,以提供“单片”解决方案。MSP430系列单片机的IO口与51系列单片机的IO口不同,其单个引脚不能独立操作,必须对整个I/O口的寄存器进行置

1

位(如无法对P1.0进行操作,只能对修改整个P1口的值)。由此看来,对MSP430系列单片机IO口的操作要稍复杂于51系列单片机。

3、MSP430单片机模拟SPI串行口

本文介绍一种用MSP430系列单片机的IO口模拟IIC接口的方法,模拟SCL和SDA两线接口的IIC接口类型。定义MSP430的I/O端口P4.6为时钟信号线(SCL),P4.7是数据信号线(SDA)。在P4.6CLK制造一个电平变化,输出数据data的高位BIT7,data中的数据依次右移一位,再将P4.6的电平变化一次,又一次输出data的高位,这时,输出的就是原来data中的次高位BIT6位,如此重复,data右移八次就完成了一个字符的输出。代码如下: unsigned char temp; for(temp=8;temp!=0;temp--) {

if(data&0x80) {

P4OUT=P4OUT|SDA; } else {

P4OUT=P4OUT&(~SDA); };

P4OUT=P4OUT|SCL; P4OUT=P4OUT&(~SCL);

2

data=data<<1; }

同样的原理,把P4.6CLK的输出电平拉高,制造一个高电平,检测输入脚P4.7的电平,记入data中,把P4.5CLK的输出电平拉低,就完成了一个字符位的接受,然后将P4.6CLK的输出电平拉高,制造一个高电平,再次检测输入脚P4.7的电平,记入data中,如此8次后就收到了一个字符,代码如下: unsigned char temp,rbyte=0; for(temp=8;temp!=0;temp--) {

P4OUT=P4OUT|SCL; data=data<<1;

data=data|(P4IN&SDA); P4OUT=P4OUT&(~SCL); }

4、应用实例

24C01是一个1K位串行EEPROM,内部含有128个8位字节,24C01有一个8字节页写缓冲器,24C01有一个16字节页写缓冲器该器件通过IIC总线接口进行操作,并有一个专门的写保护功能。本文先定义写EEPROM的子函数。

bit Write24c02(unsigned char*Wdata,unsigned char RomAddress,unsigned char number) {

bit SuccessOrNot=0; //SuccessOrNot为数据传输成功与否的标志,0为成功

3

Start();

Write8Bit(WriteDeviceAddress);

SuccessOrNot=SuccessOrNot|TestAck(); //SuccessOrNot为1说明,数据传输不成功

Write8Bit(RomAddress);

SuccessOrNot=SuccessOrNot|TestAck(); for(;number!=0;number--) {

Write8Bit(*Wdata);

SuccessOrNot=SuccessOrNot|TestAck(); Wdata++; } Stop();

return(SuccessOrNot); }

在以上的函数中需要调用如下的两个子函数,分别实现IIC串口的读写功能,Write8Bit()函数的主要功能是向传感器芯片发送指令,把需要发送的指令通过SPI模拟功传给传感器芯片。其函数代码如下:

void Write8Bit(unsigned char input) {

unsigned char temp; for(temp=8;temp!=0;temp--) {

4

if(input&0x80) {

P4OUT=P4OUT|SDA; } else {

P4OUT=P4OUT&(~SDA); };

P4OUT=P4OUT|SCL; P4OUT=P4OUT&(~SCL); input=input<<1; } return 1; }

在Start()和Stop()函数中,通过IIC串口控制通信过程的开始和结束。其函数代码如下:

void Start() {

P4OUT=P4OUT|SDA; P4OUT=P4OUT|SCL; P4OUT=P4OUT&(~SDA); P4OUT=P4OUT&(~SCL); }

5

void Stop() {

P4OUT=P4OUT&(~SCL); P4OUT=P4OUT&(~SDA); P4OUT=P4OUT|SCL; P4OUT=P4OUT|SDA; }

5、总结

本文介绍了通过软件模拟IIC总线接口,实现与IIC接口的存储器件之间数据的传输,给出了在IAR编译环境下编写的模拟IIC连接24C01的子程序。经实测,能够很好地实现IIC接口的通信功能。功能函数的结构简单、可靠性高,可移植性强。

6

MSP430系列单片机模拟SPI串行口

MSP430系列单片机模拟SPI串行口1、SPI总线简述SPI(SerialPeripheralInterface串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置包括FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接
推荐度:
点击下载文档文档为doc格式
9r2ov3m9sz2teb88imuw
领取福利

微信扫码领取福利

微信扫码分享