控制/MCU
SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI有三个寄存器分别为:控制寄存器SPCR,状态寄存器SPSR,数据寄存器SPDR。外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCLK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。
SPI接口的全称是“Serial Peripheral Interface”,意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。 SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。
接口包括以下四种信号:
(1)MOSI – 主器件数据输出,从器件数据输入
(2)MISO – 主器件数据输入,从器件数据输出
(3)SCLK – 时钟信号,由主器件产生
(4)/SS – 从器件使能信号,由主器件控制
SPI 总线具有以下特点:
(1)因连线较少,可简化电路设计。并行总线扩展方法通常需要8根数据线、8~16根地址线、2~3根控制线。而SPI总线设计,仅需4根数据线和控制线即可完成并行扩展所实现的功能。
(2)器件统一编址,并与系统地址无关,操作SPI独立性好。
(3)器件操作遵循统一的规范.使系统软硬件具有良好的通用性。
AD7390是ADl公司生产的12位分辨率电压输出数/模转换器。该DAC为用户提供低成本、高精度的可控电压解决方案,使用单电源+3V系统供电。器件保证电源电压为2.7~5.5V时消耗不到100mA的电流,所以该器件适用于一些对功效要求高的设备,比如电池供电系统。输出电压取决于外部参考输入电压。DACOUT输出介于REFIN与地之间的任意值,其内部框图如图2所示。
内部双缓冲串行数据接口提供高速转换,微控制器通过三线SPI控制器件、串行数据(SDI)、时钟(CLK)和使能(LD)引脚。此外,使用CLR输入可以对输出清零。操作时序如图3所示。
电脑通过RS 232向MCU发送控制信号,再由MCU控制AD7390,完成整个设置过程。通过串口控制AD7390的软件流程如图4所示。一旦有数据写入单片机,则单片机将重新设置AD7390。
单片机程序分为三大模块,分别是SPI控制模块、串口接收模块和操作信息反馈模块。
SPI控制模块产生CLK,LD,并在CLK的上升沿到来之前,保证SDI数据的稳定,以便AD7390准确地采集到数据。CLK时钟的频率根据器件的典型延迟决定,不同器件有不同的延迟,所以它决定了不同器件的时钟应该不一样。
串口接收模块完成从电脑接收数据并保存数据。由一片MAX 232完成RS 232电平与TTL电平之间的转换。因为传输的是连续性数据,因此在接收程序的编写时,要注意中断申请的屏蔽,才能准确地接收到全部数据。
在利用串口调试助手调试时,留意发送数据的格式,是否以16进制发送,会影响接收到的数据。比如,发送字母“E”,如果以16进制发送。发送的实际数据是“15”,而接收到的数据是“15”的ASCII码“49”、“53”;如果不以16进制发送,则发送的是字母“E”的ASCII码“69’。由此可以看出它们之间的差别。因此在接收方要得到想要的数据,则需要进行转换。该转换可参看后面的程序。
操作信息反馈模块完成操作结果的可视化输出,通过内部计算,输出设置的电压值,这为调试过程提供了很大的便利。
AD7390为12位数/模转换器。该器件接收16位数据,数据格式如图5所示,取低12位作为有效数据,自动舍弃高4位。因为单片机传输数据以字节(8 b)为单位,所以采用16位传输模式。
部分程序代码如下:
通过串口的应用,SPI器件的控制变得很方便。由于串口占用资源少,所以SPI接口在集成芯片中越来越广泛的应用,将使该控制模式成为以后系统中的典型设计。
全部0条评论
快来发表一下你的评论吧 !