Skip to main content
Jseyn.1
Associate III
February 10, 2022
Question

I2C2 as a SMBusDevice NACK?

  • February 10, 2022
  • 2 replies
  • 2082 views

firstly, i use stm32f103RBx as MCU. I2C2 set SMBusHost,

the SMBusDevice set address 0x24, but the slave nack when smbhost send smbdevice address. the folllow is my timing:

0693W00000JPEl3QAH.png

This topic has been closed for replies.

2 replies

Bob S
Super User
February 10, 2022

Your trace shows the address byte sent as 0x48, so that means your code is treating the 0x24 address as if it were a 7-bit address in the lower 7 bits. Make sure that is really the device's address. Some places refer to I2C addresses by shifting them left one bit to make room for the R/W bit in the LSB. This is "left aligned" or "right aligned" as references in your previous post https://community.st.com/s/question/0D53W00001Ief87SAB/stm32f1xx-smbus-send-address-no-ack

Is this the same device you were trying to talk to in that post?

Jseyn.1
Jseyn.1Author
Associate III
February 14, 2022

this is not the same device? the stm32 simulated as a smbus device, just the address is 0x48. the problem is the smbus device nack,but the address matched under the device interrupting.

Jseyn.1
Jseyn.1Author
Associate III
February 11, 2022

Thank you for u reply,

my smbus device nack again by shifting the slave address .

how to process in the interrupting when the slave address match, the code:

if(I2C_GetLastEvent(SMBus_NAME) & I2C_SR1_ADDR)

{

...

}

0693W00000JPOZ1QAP.png