基于MSP430F169的多路电阻测量系统
SDA和SCL是通过一个上拉电阻与正电源连接的双向信号线。当总线空闲时,这两条信号线都保持高电平。当SCL线处于高电平、SDA线从高电平向低电平跳变时为起始信号;当SCL线处于高电平、SDA线从低电平向高电平跳变时为停止信号。起始条件和停止条件之间为通信传输的过程。
3.2 单片机的拓扑结构
由于MSP430F169单片机的串行通信模块USART0可以设置成I2C模式进行工作。在多路电阻测量系统中,主机和从机通过各自的串行通信模块USART0进行I2C主/从双向通信,主机和从机都能够接收和发送数据,但总线的时钟信号SCL、起始信号、终止信号都由主机产生。I2C总线在实现时,只需将主机和从机的管脚P3.1(SDA)和管脚P3.3(SCL)相连,并将管脚设置成I2C模式,同时I2C总线必须通过两个电阻分别将总线的SDL和S拉高。单片机的拓扑图如图4所示。
4 软件设计
4.1 双机通信的实现
MSP430单片机的I2C模块有主发送、主接收、从发送、从接收4种工作模式。双机通信程序设计主要包括初始化程序、主机模式程序、从机模式程序和中断服务程序四部分。
初始化程序包括设置单片机P3.1(SDA)和管脚P3.3(SCL)为为传输端口,端口方向。设置系统时钟,系统时钟由主机产生,选择SMCLK为系统时钟。I2C模块初始化,将控制寄存器U0CTL的控制使能位(I2CEN)置1。U0CTL一个8位的寄存器。通过对该寄存器的设置来确定通信模式、通信协议和校验位的选择。
主机模式程序功能是在主机模式下完成数据的收发。首先要对主机接收、发送初始化,定义主机的地址,对R/W位置位设置接收模式,对中断寄存器I2CIE设置定义中断使能。主机接收、发送初始化程序在每次数据收发时调用。通过对I2CRM,I2CSTP,I2CSTT三个寄存器位设置控制数据发送和接收,主机产生时钟信号、起始和停止信号。
从机模式程序中数据收发初始化部分与主机模式程序相同,值得注意的是,数据的收发过程是由I2C模块自动控制,从机接收数据时随主机产生的时钟信号在总线上接收串行数据,并对接收的数据应答。从机 发送数据时,从机接收到主机发送的匹配的设备地址和主机的数据接收请求后,主机产生时钟脉冲,从机向总线发送数据。
中断服务程序的功能是实现主机和从机的数据收发,MSP430中I2C模块的是多源中断,8个中断源的中断共用一个中断向量,中断向量寄存器I2CIV的内容决定当前是哪个中断标志引起中断事件。当优先级最高的中断在寄存器I2CIV中产生对应值时,由此判断中断源并进入对应的主机模式程序和从机模式程序中,通过这2个程序中断寄存器I2CIE使能操作,完成对应的中断事件。从而实现主机和从机问数据的收发。
4.2 数据采集与处理
数据采集部分主要是从单片机通过A/D通道采集接入恒流源电路的待测电阻上产生的电压,并进行处理。MSP430F169的A/D转换具有单通道单次转换、单通道多次转换、序列通道单次转换、序列通道多次转换模式4种模式。考虑到有8路采集,每个通道每次测量要采集256次数据,因此选用序列通道多次转换模式。A/D转换电路通过模拟通道进行多通道重复转换,使其采集流经待测电阻的电压数据不断自动更新,转换结果顺序的存放在转换存储寄存器中。ADC12MCTLx寄存器的EOS位定义最后一个通道转换完成后表示一次序列通道转换完成,触发信号会触发下次序列通道转换。数据的采样时间间隔由定时器A控制,每次定时器A中断到来时读取A/D采集的数据,在读取前停止A/D转换,读取完毕后重启A/D采集,当数据采集完毕后设置标志位通知其他程序已获得新数据,通过全局变量来实现与其他处理程序数据交互。采样流程图5所示。数据处理方面,为了提高电阻测量的精度,每个测量通道在每次测量时采集256组数据,从机对采集的这256组数据进行算术平均后再通过运算得出每个通道所测量的电阻值。
4.3 系统软件实现
系统软件采用模块化设计,软件子功能程序分割与硬件模块电路相对应。系统软件包括主程序、双机通信子程序、数据采集子程序、数据处理子程序、串行通信子程序、定时器中断服务子程序、显示子程序、存储及按键控制子程序。限于篇幅只给出主程序流程图,如图6所示。
5 结语
本文多路电阻测量系统利用I2C总线实现了MSP430系列单片机之间的全双工通信,解决了基于双机通信系统的关键技术,双单片机的设计结构灵活紧凑,不但减轻了主处理器的负担,而且提高了测量的精度、可靠性和实时性,同时也是对双处理器系统研究的具体实践。
MSP430F169 多路电阻 相关文章:
- 12位串行A/D转换器MAX187的应用(10-06)
- AGC中频放大器设计(下)(10-07)
- 低功耗、3V工作电压、精度0.05% 的A/D变换器(10-09)
- PIC16C5X单片机睡眠状态的键唤醒方法(11-16)
- 用简化方法对高可用性系统中的电源进行数字化管理(10-02)
- 利用GM6801实现智能快速充电器设计(11-20)