cancel
Showing results for 
Search instead for 
Did you mean: 

I2C2 as a SMBusDevice NACK?

Jseyn.1
Associate III

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

3 REPLIES 3
Bob S
Principal

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
Associate III

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

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.