经验谈:SPI在LonWorks控制节点中的应用
导读:
关键字:
经验谈:SPI在LonWorks控制节点中的应用 与传统的单片机系统不同,神经元芯片可以定义34种不同的I/O对象。其中包括可以支持现在应用比较广泛的MOTOROLA公司的SPI总线及NS公司的Microwire总线的Neurowire对象。这大大弥补了11只I/O引脚的不足。 SPI(Serial Peropheral Interface)总线是MOTOROLA公司提出的一个同步串行外设接口,用于CPU与各种外围器件进行全双工、同步串行通讯。SPI可以同时发出和接收串行数据。它只需4条线就可以完成MCU与各种外围器件的通讯。这些外围器件可以是简单的TTL移位寄存器,复杂的LCD显示驱动器,A/D、D/A转换子系统或其他的MCU。当SPI工作时,在移位寄存器中的数据逐位从输出引脚(MOSI)输出(高位在前),同时从输出引脚(MISO)接收的数据逐位移到移位寄存器(高位在前)。发送一个字节后,从另一个外围器件接收的字节数据进入移位寄存器中。主SPI的时钟信号(SCK)使传输同步。 在神经元芯片定义的34种I/O对象中包含了与SPI串行总线相兼容的同步串行(Neurowire)I/O对象,它可以实现神经元芯片与遵循MOTOROLA公司的SPI接口约定的器件、设备之间的同步全双工串行通信。在实际应用中我们选用TI公司的11通道12位串行AD转换芯片TLC2543与神经元芯片3150共同构成一个数据采集节点。SPI串行总线时序如图1所示。节点框图如图2所示。 图1SPI串行总线典型时序图图2数据采集节点框图接口程序如下: //声明同步串行I/O对象 IO_8 neurowire master select(IO_1) ioA2D; IO_1 output bit ioA2DSelect=1; #pragma ignore_notused ioA2Dselect //A/D转换处理函数 unsigned long analog_to_digital(unsigned long analog_addr) { unsigned long adc_info; unsigned long digital_out; adc_info=(analog_addr<<8);//送下一次A/D转换通道地址 io_in(ioA2D,&adc_info,12);//启动A/D转换并将上次地址中的AD转换的12位数据读入 digital_out=((adc_info>>4)&0xff0) (adc_info& 0x00f);//将A/D转换结果处理后保存 return digital_out; } 程序说明: (1) adc_info中存放的是A/D转换通道的地址; (2) didital_out中存放的是A/D转换的12位数据。 (武汉大学孙 强陈 健郝 蕾孙 刚)
来源:单片机与嵌入式系统应用 作者:武汉大学 孙强 陈健 郝蕾 孙刚 2006/2/12 0:00:00