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
当主器件发送的从器件地址和其本地地址相匹配,且接收到被清零的 R/W 时,从器件进入接收模式。在从器件接收模式中,从器件根据主器件产生的时钟脉冲信号在 SDA 上接收串行数据。从设备不能产生时钟,但是当一个字节接收完毕需要 CPU 的干预时,从器件可保持 SCL 为低电平。
如果从器件需要接收主器件发送过来的数据,则 USCI 模块将自动配置为接收,并将 UCTR 清零。在接收完第一个数据字节后,接收中断标志 UCBxRXIFG 被置位。USCI 模块会自动应答接收到的数据并可接收下一个数据字节。
如果在一个接收完成之后没能从接收缓存 UCBxRXBUF 内读出前一个数据,则通过保持 SCL 为低电平,总线被停止。一旦 UCBxRXBUF 被读取,新数据就会被传输到 UCBxRXBUF,就会把一个应答信号给主器件,然后开始下个数据的接收。
置位 UCTXNACK 会导致在下一个应答周期内发送一个 NACK 信号给主器件。即使 UCBxRXBUF 没有准备好接收最新数据,也将会立即发送一个 NACK。如果在 SCL 为低电平时置位 UCTXNACK 将会释放总线,并马上会发送一个NACK 信号,同时 UCBxRXBUF 将装载最后一次接收到的数据。由于先前的数据还没有被读出,这将造成数据丢失。为了避免数据丢失,需要在设置 UCTXNACK 之前读取 UCBxRXBUF。
当主设备产生一个停止停止条件时,UCSTPIFG 标志被置位。
如果主器件产生一个重复起始条件时,则 USCI I2C 将返回到地址接收状态。
图 17-10给出了 I2C 从接收器操作。