单片机 MSP430 IIC控制器编程(1)

近日在开发开发微型投影仪的单片机程序,主要是用单片机控制DLP芯片组进行相应的初始化和参数设置,所有芯片的通信接口都是用IIC。

在此记录下,IIC的开发过程。

PS:

博客里面发图片就是这么操蛋!哎

直接附上相关手册吧:链接:http://pan.baidu.com/s/1o6q0Xfk 密码:899x


1.初始化

17.3.1 USCI初始化和复位
USCI由一个 PUC 进行复位或由 UCSWRST 位设置。 在一个 PUC 之后, UCSWRST 位被自动设置, 从而
保持了 USCI 处于复位状态。 为了选择 I2C 运行, UCMODEx 位必须设置为 11。 模块被初始化后, 已准备
好发送或接收操作。 清除 UCSWRST 位会使 USCI 处于运行状态。
当 UCSWRST 被设定以便避免不可预知的运行状态时, 应完成 USCI 模块的配置和重新配置。 在 I2C 模式
下设置 UCSWRST 具有以下作用:
• I2C 通信停止
• SDA 和 SCL 为高阻抗
• UCBxI2CSTAT, 6-0 位被清零
• UCBxTXIE 和 UCBxRXIE 被清零
• UCBxTXIFG 和 UCBxRXIFG 被清零
• 所有其他位和寄存器保持不变。
注: 初始化或重新配置USCI 模块
建议的 USCI 初始化或重新配置过程是:
1. 置位 UCSWRST (BIS.B#UCSWRST, UCxCTL1)
2. UCSWRST= 1, 初始化所有 USCI 寄存器( 包括 UCxCTL1)
3. 配置端口。
4. 通过软件清零 UCSWRST (BIC.B#UCSWRST, UCxCTL1)
5. 通过 UCxRXIE 和/或 UCxTXIE 使能中断( 可选)




2. 主从模式

17.3.4.1受控模式
通过把 I2C 模式设置为 UCMODEx=11 和 USCYNC=1, 并清除 UCMST 位, USCI 模块被配置为一个 I2C
从器件。
首先, USCI 模块必须在接收模式下通过清除 UCTR 位进行配制, 以便接收 I2C 从器件地址。 之后, 发送和
接收操作是由与从器件一起接收到的 R/W 位自动决定。
USCI 从器件地址是由 UCBxI2COA 寄存器编程的。 当 UCA10=0 时, 选用 7 位寻址方式。 当 UCA10=1
时, 选用 10 位寻址方式。 如果从器件响应一个常规调用, 则可以选择 UCGCEN 位。


17.3.4.2 主控模式
通过把 I2C 模式设置为 UCMODEx= 11 和 USCYNC=1, 并置位 UCMST 位, USCI 模块被配置为一个 I}2C
主器件。 当主器件是多主器件系统的一部分时, 必须置位 UCMM, 并且其自身地址必须被编入
UCBxI2COA 寄存器。 当 UCA10=0 时, 选用 7 位寻址方式。 当 UCA10=1 时, 选用 10 位寻址方式。 如
果 USCI 模块响应常规调用, 则可以选择 UCGCEN 位。


17.3.4.2.1 I2C主控发送器模式
初始化之后, 通过把目标从器件地址写入寄存器 UCBxI2CSA、 用 UCSLA 10 位来选择从器件地址的位数、
置位 UCTR 来选择发送模式、 置位 UCTXSTT 来产生一个起始条件, 主控发送器模式才被初始化。
USCI 模块先检测总线是否空闲, 之后产生一个起始条件, 并传送从器件地址。 当起始条件产
生, CBxTXIFG 将被置位, 并将要发送的第一个数据写入 UCBxTXBUF 中。 一旦从器件对地址作出应
答, UCTXSTT 位会被清零。
在从器件地址的发送过程中, 如果仲裁没有失效, 那么会已发送写入到 UCBxTXBUF 中的数据。 一旦数据
由缓冲区转移到移位寄存器, UCBxTXIFG 将再次置位。 如果在应答周期到来之前 UCBxTXBUF 中没有装
载新数据, 那么在应答周期过程中总线将被挂起, SCL 将保持拉低电平状态, 直到数据写入缓存器
UCBxTXBUF 中。 只要 UCTXSTP 位或 UCTXSTT 位没被置位, 数据就就会被传输或总线被保持。
在从器件下一个应答信号到来之后, 置位 UCTXSTP 将会产生一个停止条件。 如果在从器件的地址传送过
程或者是 USCI 模块等待把数据写入 UCBxTXBUF 的过程中置位 UCTXSTP, 则即使没有数据被发送到从
器件依旧会产生一个停止条件。 如果传送的是单字节数据, 在字节传送过程中或者在数据传输开始后必须置
位 UCTXSTP, 不要将任何新的数据写入 UCBxTXBUF。 否则, 会造成只传送地址。 当数据由缓冲器转移
到发送移位寄存器时, UCBxTXIFG 将被置位, 这表示着数据传输已经开始, 可以置位 UCTXSTP 了。
置位 UCTXSTT 将会产生一个重复起始条件。 在这种情况下, 可以通过置位或清零 UCTR, 以便配置为发
送器或接收器。
如果从器件没有响应发送的数据, 则未响应中断标志 UCNACKIFG 会被置位。 主器件必须发送一个停止条
件或者重复起始条件的方式来响应。 如果已经把数据写入 UCBxTXBUF, 那么当前数据将被丢弃。 如果在
一个重复起始条件后, 这个数据还要发送出去, 则必须重新将其写入 UCBxTXBUF。 任何置位 UCTXSTT
也会被丢弃。 若要触发一个重复起始条件, UCTXSTT 需要重新被置位。
图 17-12给出了 I2C 主器件发送操作。


17.3.4.2.2 I2C主控接收器模式
初始化之后, 通过把目标从器件地址写入寄存器 UCBxI2CSA、 用 UCSLA 10 位来选择从器件地址的位数、
置位 UCTR 来选择发送模式、 置位 UCTXSTT 来产生一个起始条件, 主器件接收模式才被初始化。
USCI 模块先检测总线是否空闲, 之后产生一个起始条件, 并传送从器件地址。 一旦从器件对地址作出应
答, UCTXSTT 位会被清零。
在从器件对地址应答后, 将接收到从器件发送的第一个数据字节并发送应答信号, 同时置位 UCBxRXIFG 标
志。 只要 UCTXSTP 或 UCTXSTT 不被置位, 就能接收到从器件发来的数据。 若没有读取 UCBxRXBUF,
那么主器件将在接收最后到一个数据位后挂起总线直到 UCBxRXBUF 被读取。
如果从器件没有响应发送的地址, 则未响应中断标志 UCNACKIFG 会被置位。 主器件必须发送一个停止条
件或者重复起始条件的方式来响应。
置位 UCTXSTP 将会产生一个停止条件。 置位 UCTXSTP 后, 主器件将在接收完从设备传送的数据后发出
一个NACK, 并紧接着发送一个停止, 或者如果在 USCI 模块正在等待读取 UCBxRXBUF时, 将立即产生停
止。
如果主及想接收一个单字节数据, 那么在接收字节的过程中必须将 UCTXSPT 位置位。 在这种情况下, 可
以通过查询 UCTXSTT 来确定何时将被清除:
BIS.B #UCTXSTT,&UCBOCTL1 ;Transmit START cond.POLL_STT BIT.B #UCTXSTT,&UCBOCTL1 ;Poll UCTXSTT
bitJC POLL_STT ;When cleared,BIS.B #UCTXSTP,&UCB0CTL1 ;transmit STOP cond.
置位 UCTXSTT 将会产生一个重复起始条件。 在这种情况下, 可以通过置位或清零 UCTR, 以便配置为发
送器或接收器, 如果需要的话, 还可以把不同的地址写入 UCBxI2CSA。
图 17-13给出了 I2C 主控接收器操作。
注: 在不使用重复起始的情况下的连续主器件传输
在不使用重复起始功能的情况下, 当进行多个连续 I2C 主器件传输时, 当前传输必须在下一个
传输初始化完成之前结束。 这可以通过确保在下一个 I2C 传输初始化完成之前发送停止条件标
志 UCTXSTP 被清零, 并设置 UCTXSTT= 1来完成。 否则, 将会影响当前的传输。




3. DLPC3438的IIC器件地址0x36

4. IT6605的IIC器件地址

PCADR=1, IIC address = 0x92; 

PCADR=0, IIC address = 0x90;



良心货,有学习MSP430程序的网友拿去,各种例题,源码,可以直接拿来用的例程。 程序目录: MSP430F149+1602数码显示和实时时钟 MSP430F149,IAR,ADC采样之后对太阳点光源进行跟踪 MSP430F149 AD7705程序 MSP430 BH1750测量光强(已测试) Launch Pad NOKIA5110 Clock 使用MSP430单片机控制超声波测距并使用5110显示 基于MSP430的MP3 源码+电路图+PCB+字库+SD卡 基于MSP430单片机控制坦克打靶C语言源程序代码 MSP430F149 GSM基本控制,初始化接收短息,解读短信 ADXL重力加速度传感器实现计步器程序(利用MSP430F135实现) 利用MSP430的PWM功能实现电机的调速(可实现精确调速) TI公司MSP430芯片评估板lantchpad的电容式触摸板的源码 基于MSP430F149单片机的1602程序代码 基于MSP430F149单片机的nRF24L01无线通信程序 基于MSP430F149单片机的串口0驱动程序 基于MSP430F149单片机的温湿度传感器SHT1X驱动程序 基于MSP430F149的12864的显示图片 基于MSP430F149的AD转换,在液晶1602上显示 基于MSP430F149的触摸手写程序 基于MSP430F149为主芯片下的红外线解码资料源程序 基于MSP430F249的GPS+GPRS车载GPS 基于MSP430单片机的电子式互感器采集器的程序 基于MSP430单片机的智能电表 基于MSP430的触摸屏校正程序 基于MSP430的温度传感器DS18B20对温度的检测和显示 基于单片机MSP430的DS1302的时钟芯片编程实现时钟显示 利用MSP430实现的超低功耗触摸屏 使用MSP430低功耗微处理器制作的斜度计(开发平台是IAR) 通过MSP430(149)单片机控制DHT11温湿度传感器 MSP430F149单片机与RF2401硬件SPI无线通信 MSP430f149控制LCD12864显示汉字、字母 MSP430F149通过SPI接口控制ADS1216 MSP430F449实现频率测量,呼吸灯,自己写的,调试OK MSP430x13x, MSP430F14x, MSP430F15x, MSP430F16x Code Examples MSP430x14x读写FM25L256程序 MSP430x14x模糊逻辑马达控制-源程序,已通过测试 MSP430单片机短息收发程序 MSP430平台 AM2301测量光强(已测试) MSP430热电偶开发程序,高精度测量,带标定 MSP430热电阻开发,高精度测量,带标定,修正 MSP430小车解决方案含Protel和源代码 MSP430与指纹识别
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值