ZHCU032K December 2004 – August 2022 MSP430AFE221 , MSP430AFE222 , MSP430AFE223 , MSP430AFE231 , MSP430AFE232 , MSP430AFE233 , MSP430AFE251 , MSP430AFE252 , MSP430AFE253 , MSP430F2001 , MSP430F2002 , MSP430F2003 , MSP430F2011 , MSP430F2012 , MSP430F2013 , MSP430F2101 , MSP430F2111 , MSP430F2112 , MSP430F2121 , MSP430F2122 , MSP430F2131 , MSP430F2132 , MSP430F2132-EP , MSP430F2232 , MSP430F2234 , MSP430F2252 , MSP430F2252-Q1 , MSP430F2254 , MSP430F2272 , MSP430F2272-Q1 , MSP430F2274 , MSP430F2274-EP , MSP430F233 , MSP430F2330 , MSP430F235 , MSP430F2350 , MSP430F2370 , MSP430F2410 , MSP430F2416 , MSP430F2417 , MSP430F2418 , MSP430F2419 , MSP430F247 , MSP430F2471 , MSP430F248 , MSP430F2481 , MSP430F249 , MSP430F2491 , MSP430F2616 , MSP430F2617 , MSP430F2618 , MSP430F2619 , MSP430G2001 , MSP430G2101 , MSP430G2102 , MSP430G2111 , MSP430G2112 , MSP430G2121 , MSP430G2131 , MSP430G2132 , MSP430G2152 , MSP430G2153 , MSP430G2201 , MSP430G2201-Q1 , MSP430G2202 , MSP430G2203 , MSP430G2210 , MSP430G2211 , MSP430G2212 , MSP430G2213 , MSP430G2221 , MSP430G2230 , MSP430G2231 , MSP430G2231-Q1 , MSP430G2232 , MSP430G2233 , MSP430G2252 , MSP430G2253 , MSP430G2302 , MSP430G2303 , MSP430G2312 , MSP430G2313 , MSP430G2332 , MSP430G2333 , MSP430G2352 , MSP430G2353 , MSP430G2402 , MSP430G2403 , MSP430G2412 , MSP430G2413 , MSP430G2432 , MSP430G2433 , MSP430G2444 , MSP430G2452 , MSP430G2453 , MSP430G2513 , MSP430G2533 , MSP430G2544 , MSP430G2553 , MSP430G2744 , MSP430G2755 , MSP430G2855 , MSP430G2955 , MSP430TCH5E
初始化之后,通过把目标从器件地址写入寄存器 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 主器件发送操作。