This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

I2C请教

Other Parts Discussed in Thread: MSP430G2221

MCU是MSP430G2221硬件上,通过P1.6,P1.7与ARM的I2C总线通信,那我程序里是否可以通过USI模块的I2C模式与ARM进行I2C通信呢?是不是最好在程序里把MSP430上的I2C设置成slave,而让ARM端的I2C配置成master?

  • 1.1.6,1.7本来就是G2221的IIC模块的引脚,当然推荐使用USI模块进行IIC通讯,如果想用IO模拟也是可以的;

    2.与ARM通讯,还是要看系统中主控制器是谁,如果是ARM,则可以按照楼主说的这样配置,还是和应用相关;

    3.楼主能说一下您使用MSP430和ARM是在什么系统中呢?系统有什么性能指标的要求,ARM是什么型号的,也便于大家帮您优化系统。

  • 您好,

    我的平台是NS115,采用ARM Cortex A9 MPCore,MSP430通过P1.6、P1.7与ARM核I2C总线通信,MSP430其他引脚上挂载众多其他设备模块,如射频、SIM卡等。

    ARM上跑的是Linux系统,Linux内核有I2C总线驱动,单片机部分的程序有功能需求:

    1. ARM端程序下发I2C命令通知MSP430关闭射频(ARM端->MSP430);

    2. MSP430端程序检测到SIM卡插入(引脚中断检测),则发I2C命令通知ARM端进行相应的处理(MSP430 ->ARM端)。

    所以,我除了写单片机部分的程序,还应该需要写ARM端这部分通信的I2C设备驱动程序。

    因为我看点Linux的I2C总线驱动,似乎都是在充当着Master,所以,我想是否在单片机端都应该配置成slave,但是如果是slave的话,当实现需求2的时候,不能主动发起I2C命令....

    以上求教如何实现?

  • 你好:

    按照你的描述,在该系统中软件和功能方面,MSP430做从机比较合适,IIC配置为slave, 对于第二个功能,可以使用ARM定时发送命令查询的方式解决。