news 2026/5/19 7:57:32

基于ARMCortex-M4F内核的MSP432MCU开发实践【3.1】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于ARMCortex-M4F内核的MSP432MCU开发实践【3.1】

2.主模式

通过设置UCMODEx=11、USCYNC=1,置位UCMST控制位,eUSCI_B模块将被配置为I2C主模式。若当前主机是多主机系统的一部分时,必须将UCMM置位,并将其自身地址编程写入UCBxI2COA寄存器。UCA10=0时,选择7位寻址模式; UCA10=1时,选择10位寻址模式。UCGCEN控制位选择eUSCI模块是否对全呼做出反应。

注意:在启用自身地址检测(UCOAEN=1)的主机模式下,尤其是在多主机系统中,不允许在自己的地址和从机地址寄存器(UCBxI2CSA=UCBxI2COAx)中指定相同的地址。在软件中必须确保不会发生这种情况。这种情况没有硬件检测,结果使eUSCI_B的值不可预测。

(1)I2C主机发送模式

初始化之后,主发送模式通过下列方式启动:将目标从地址写入UCBxI2CSA寄存器,通过UCSLA10控制位选择从地址大小,置位UCTR控制位将主机设置为发送模式,之后置位UCTXSTT控制位产生起始条件。

eUSCI_B模块首先检测总线是否空闲,然后产生一个起始条件,发送从机地址。当产生起始条件时,UCTXIFG0中断标志位将会被置位,此时可将需发送的数据写入UCBxTXBUF发送缓冲寄存器中。一旦有从机地址对地址做出应答,UCTXSTT控制位将立即被清零。在发送从机地址的过程中,如果总线仲裁没有丢失,那么将发送写入UCBxTXBUF中的数据。一旦数据由发送缓冲寄存器移入发送移位寄存器,UCTXIFG0将再次被置位,表明发送缓冲寄存器UCBxTXBUF为空,可写入下次需传送的新字节数据。如果在应答周期之前,没有数据装载到UCBxTXBUF中,那么总线将在应答周期内挂起,SCL保持低电平状态,直到数据写

入UCBxTXBUF中。只要UCTXSTP控制位或UCTXSTT控制位没有置位,将一直发送数据或挂起总线。

主机置位UCTXSTP控制位,可在接收到从机下一个应答信号后,产生一个停止条件。如果在从机地址的发送过程中,或者当eUSCI模块等待UCBxTXBUF写入数据时,UCTXSTP控制位置位,即使没有数据发送到从机,也会产生一个停止条件。如果发送的是单字节数据,在字节发送过程中或数据发送开始后,没有新数据写入UCBxTXBUF,必须置位UCTXSTP控制位,否则将只发送地址。当数据由发送缓冲寄存器移到移位寄存器时,UCTXIFG0将会置位,这表示着数据传输已经开始,可以对UCTXSTP控制位进行置位操作。

置位UCTXSTT控制位将会产生一个重复起始条件,在这种情况下,为了配置发送器或者接收器,可以复位或者置位UCTR控制位,需要时可将一个不同的从地址写入UCBxI2CSA寄存器。

如果从机没有响应发送的数据,未响应中断标志位UCNACKIFG将置位。主机必须产生停止条件或者重复起始条件。如果已有数据写入UCBxTXBUF缓冲寄存器中,那么将丢弃当前数据。如果这个数据必须在重复起始条件后发送,必须重新将其写入UCBxTXBUF中。UCTXSTT的设置也将被丢弃,为了触发重复起始条件,UCTXSTT控制位必须再次置位。

(2)I2C主机接收模式

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/6 13:59:49

STM32串口DMA与空闲中断联合应用实战案例

STM32串口DMA与空闲中断联合应用实战:如何实现高效、低CPU占用的不定长数据接收?在嵌入式开发中,你是否遇到过这样的场景?多个传感器通过串口持续发送数据,主控MCU却因频繁中断而“卡顿”;接收到的数据总是…

作者头像 李华
网站建设 2026/5/13 14:31:00

药品说明书简化:专业术语解释在TensorRT上自动转换

药品说明书简化:专业术语解释在TensorRT上自动转换 在医院候诊室里,一位老年患者拿着刚开的处方药说明书皱眉——“本品通过抑制血管紧张素转化酶活性,降低外周血管阻力”这样的句子对他而言如同天书。而与此同时,医生正被堆积如山…

作者头像 李华
网站建设 2026/5/16 13:19:20

arduino小车与传感器融合教学:项目应用解析

从遥控玩具到智能小车:用传感器融合点亮你的Arduino机器人你有没有过这样的经历?花了一周时间把Arduino小车组装好,连上电机、装上轮子、下载了示例代码,按下按钮——结果它一头撞墙,转个弯又卡在角落里出不来。明明是…

作者头像 李华