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

原创 2015年11月21日 10:02:17

近日在开发开发微型投影仪的单片机程序,主要是用单片机控制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单片机综合实例(proteus)

/*转自本人新浪博中的记录,时间:2010-09-26 16:28:06 最近学了一段时间的msp430单片机,感觉这款低功耗的单片机很有意思,虽然还没有彻底弄明白它的具体操作,但是一些简单...
  • lchmcu
  • lchmcu
  • 2012年10月20日 13:57
  • 479

GPRS模块中AT指令发送短信的PDU编码规则

本文以一个实例来解说AT指令发送PDU短信的全过程。     在说明PDU编码规则之前,提示一下刚接触到GPRS模块的同仁。我用的是西门子的GPRS模块,开始用它自带的九针转十五针的串口线来连接PC...
  • mjy2011
  • mjy2011
  • 2012年03月19日 08:40
  • 681

单片机 MSP430 模拟IIC编程(1)

20151121 以下附上的是模拟IIC通信模块程序,是我在TI官网提供的投影仪评估板例程中拿出来的,本人还没有验证,暂且认为他可以工作,估计下个星期就会去验证他,到时候再修改。 其实贴出这个程序...

单片机 MSP430 模拟IIC编程(2)

示例 ////////////////////////////////////////////////// void I2C_Master_Init(void) /** * Initializes...

msp430f149单片机模拟IIC驱动OLED

  • 2014年07月24日 14:55
  • 32KB
  • 下载

GSM/GPRS模块 AT指令集C语言编程——基于有方M660+和MSP430单片机

GSM/GPRS芯片是手机中负责收发短信、拨打电话以及访问GPRS网络的核心器件。有方M660+为深圳有方公司生产的一款超小封装的GSM/GPRS工业无线模块,可以提供高品质的语音、短信、数据业务等功...
  • jzj1993
  • jzj1993
  • 2013年09月23日 14:51
  • 7970

利用MSP430F5438A单片机进行SD卡初始化——实战应用(四)与FatFs的整合1

整合进入FatFs 在前文中提到过,如果需要所存储的数据能够在电脑上读取出来,需要建立文件系统,FatFs作为一个开源的文件系统具有很好的可移植性,在成功完成SD卡初始化,并借助实现过程对SPI通信...
  • liujj05
  • liujj05
  • 2015年04月05日 21:46
  • 646

MSP430微控制器设计讲座-1

  • 2009年08月24日 10:28
  • 394KB
  • 下载

MSP430 IIC通信

#include #define OP_READ 0xa1 //器件地址读 #define OP_WRITE 0xa0 //...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:单片机 MSP430 IIC控制器编程(1)
举报原因:
原因补充:

(最多只允许输入30个字)