Hi all,
We are working on imx8mplus based custom board. Just wanted to know if we can configure the imx8mplus to act as a SMBUS master in order to communicate with an SMBUS slave connected to the I2C bus. If yes, are there any sample application code using which we can get a start.
Hoping for a response,
Aaron
已解决! 转到解答。
Hello @aaronrenny ,
->SMB is based on the principles of operation of I2C.
->One has to enable the smbus controller in 8mp soc and configure the register , basically it is part of the i2c bus
->SMBus provides a control bus for the system to pass messages to and from devices instead of using individual control lines, helping to reduce pin count and system wires.
->The SMBus specification refers to three types of devices: host, master, and slave.
->A device can be master only or slave only. It may act as a slave most of the time, but in special instances it becomes a master.
• A master is a device that issues commands, generates the clocks, and terminates the transfer.
• A slave is a device that receives or responds to a command.
->Now one can use smb protocol to communicate with slave.
There are Reserved SMBus addresses.
where 0th bit one can decide to read or write to/from the slave.
To give command and exact data to particular slave please refer Table-3 from the below link.
https://www.nxp.com/docs/en/application-note/AN4471.pdf
for more details on SMB one can refer below links.
https://www.nxp.com/docs/en/data-sheet/PCA6416A.pdf
https://www.nxp.com/docs/en/application-note/AN4471.pdf
Refer <linux_source_code>/drivers/input/mouse/elan_i2c_smbus.c for more details on coding part.
Thanks & Regards,
Sanket Parekh
to be more precise, I understand SMBus, just not how to enable the SMBus controller in this board with the available libraries. Is there an existing configuration that needs to be set? or manually send a message to the controller in order to configure it for SMBus?
Hello @aaronrenny ,
->SMB is based on the principles of operation of I2C.
->One has to enable the smbus controller in 8mp soc and configure the register , basically it is part of the i2c bus
->SMBus provides a control bus for the system to pass messages to and from devices instead of using individual control lines, helping to reduce pin count and system wires.
->The SMBus specification refers to three types of devices: host, master, and slave.
->A device can be master only or slave only. It may act as a slave most of the time, but in special instances it becomes a master.
• A master is a device that issues commands, generates the clocks, and terminates the transfer.
• A slave is a device that receives or responds to a command.
->Now one can use smb protocol to communicate with slave.
There are Reserved SMBus addresses.
where 0th bit one can decide to read or write to/from the slave.
To give command and exact data to particular slave please refer Table-3 from the below link.
https://www.nxp.com/docs/en/application-note/AN4471.pdf
for more details on SMB one can refer below links.
https://www.nxp.com/docs/en/data-sheet/PCA6416A.pdf
https://www.nxp.com/docs/en/application-note/AN4471.pdf
Refer <linux_source_code>/drivers/input/mouse/elan_i2c_smbus.c for more details on coding part.
Thanks & Regards,
Sanket Parekh
Hi @Sanket_Parekh ,
Thank you for the detailed input, I will try out the suggestions given.
Thanks,
Aaron