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.
您好,
我的平台是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命令....
以上求教如何实现?
Kyle wang,你好。MSP430G2231这边的USI的I2C mode应该支持多 master形式,可以进行总线仲裁。具体请参照user guide的14.2.4.8 Arbitration。
Kyle wang 说:1. ARM端程序下发I2C命令通知MSP430关闭射频(ARM端->MSP430);
容易实现,不用多说了。
Kyle wang 说:2. MSP430端程序检测到SIM卡插入(引脚中断检测),则发I2C命令通知ARM端进行相应的处理(MSP430 ->ARM端)。
Master端采用定时轮询的方式,比如500ms发送一个命令给MSP430要求读取SIM卡插入状态,如果插入了MSP430返回状态。
ARM端只不过是发送一个7位地址+写----8位命令-----7位地址+读;
就OK了。