+ Post New Thread
Results 1 to 8 of 8
  1. #1
    Newbie level 3
    Points: 34, Level: 1

    Join Date
    Oct 2018
    Posts
    5
    Helped
    0 / 0
    Points
    34
    Level
    1

    Issue communicating to Honeywell pressure sensor to I2C bus

    Hi,

    I am trying to communicate with the Honeywell pressure sensor, SSCMRNN015PA3A3, via I2C but it seems that it is not replying or not acknowledging the request.

    The set up I have is that I am connecting on my USB port, a FTDI cable C232HM-EDHSL-0. With this I am using FTDI's API to send a read to this pressure sensor.

    I am driving the pressure sensor with 3.3V with 1k pull ups on both the SCL and SDA lines.
    I have also added a 1300pf cap to the SDA line to slow down the rise and fall time, seems that the SCL is also having some offshoots.

    Click image for larger version. 

Name:	I2C waveform3.png 
Views:	3 
Size:	30.0 KB 
ID:	149578

    The address for the pressure sensor, according to Honeyell's datasheet, is set as 0x38 which is 0111000 binary.

    It seems that the sensor is not pulling down on the SDA line to ACK the Master's request, see oscilloscope output below, SCL is RED and SDA is BLUE:

    Click image for larger version. 

Name:	I2C waveform1.png 
Views:	6 
Size:	61.1 KB 
ID:	149576

    Here is a view which includes the Start bit at the beginning:

    Click image for larger version. 

Name:	I2C waveform2.png 
Views:	4 
Size:	36.6 KB 
ID:	149577

    My scope have an I2C decoding function and it seems to see the whole sequence:

    Click image for larger version. 

Name:	I2C decoding.png 
Views:	3 
Size:	3.1 KB 
ID:	149579

    I am stumped on this problem. I have tried it on more than one sample of the same model of sensor but the same issue.


    Anyone have an expertise on either this sensor, the USB cable or I2C?

    •   AltAdvertisment

        
       

  2. #2
    Super Moderator
    Points: 66,943, Level: 63
    Achievements:
    7 years registered
    Awards:
    Most Frequent Poster 3rd Helpful Member

    Join Date
    Apr 2014
    Posts
    13,671
    Helped
    3127 / 3127
    Points
    66,943
    Level
    63

    Re: Issue communicating to Honeywell pressure sensor to I2C bus

    Hi,

    I have also added a 1300pf cap to the SDA line to slow down the rise and fall time
    I don't recommend this. The timing should be controlled by the bus devices, not by additional capacitors.

    It seems that the sensor is not pulling down on the SDA line to ACK the Master's request
    When the slave doesn't acknowledge, then the following data is not valid.
    You may immediately stop transmission after nACK and start a new try.

    For my taste the SDA edges are close to the SCL edges... even with the use of your capacitor...

    Klaus
    Please donīt contact me via PM, because there is no time to respond to them. No friend requests. Thank you.



    •   AltAdvertisment

        
       

  3. #3
    Newbie level 3
    Points: 34, Level: 1

    Join Date
    Oct 2018
    Posts
    5
    Helped
    0 / 0
    Points
    34
    Level
    1

    Re: Issue communicating to Honeywell pressure sensor to I2C bus

    Hi Klaus,

    For my taste the SDA edges are close to the SCL edges... even with the use of your capacitor...
    Do you mean that the SDA edge and SCL edges are too close in my example?

    I am commanding via the USB cable's API and there does not seem to be anything I could do other than to change the options for I2C through this API. (not whitout changing the library anyway) I am not quite sure what this option 3-phase-clocking mean:

    Attachment 149580

    The waveform from the original post is shown when the 3 phase clocking is disabled.


    FTDI's API manual is here:

    https://www.ftdichip.com/Support/Doc...bMPSSE-I2C.pdf


    The following is an example of when I enable this 3-phase clock option:

    Click image for larger version. 

Name:	I2C waveform4-3phase-enable.png 
Views:	0 
Size:	60.9 KB 
ID:	149581

    Still no positive reply from the sensor though.

    Any suggestions?

    - - - Updated - - -

    The image seem to have lost from my last message regarding the 3-phase clocking.

    Here it is again:
    Click image for larger version. 

Name:	I2C cable setting.png 
Views:	2 
Size:	84.8 KB 
ID:	149583



    •   AltAdvertisment

        
       

  4. #4
    Super Moderator
    Points: 66,943, Level: 63
    Achievements:
    7 years registered
    Awards:
    Most Frequent Poster 3rd Helpful Member

    Join Date
    Apr 2014
    Posts
    13,671
    Helped
    3127 / 3127
    Points
    66,943
    Level
    63

    Re: Issue communicating to Honeywell pressure sensor to I2C bus

    Hi,

    3phase clocking.
    During data transmission the SDA must change only during SCL = HIGH.
    No SDA transition allowed at SCL = HIGH, or falling or rising.
    SCL falling to SDA change is 5us minimum in standard mode.
    SCL falling to SDA change is 10ns minimum in HS mode.
    For more details I recommend to read I2C specification.

    ****

    When there is no traffic on the I2C, then the bus should be idle.
    I2C idle means that both SCL and SDA are HIGH.
    This is not the case in your scope pictures.

    I'm not experienced with the FTDI I2C API....but from your scope signals it seems you miss to include I2C_START and I2C_STOP commands.

    Klaus
    Please donīt contact me via PM, because there is no time to respond to them. No friend requests. Thank you.



  5. #5
    Super Moderator
    Points: 249,147, Level: 100
    Awards:
    1st Helpful Member

    Join Date
    Jan 2008
    Location
    Bochum, Germany
    Posts
    43,356
    Helped
    13182 / 13182
    Points
    249,147
    Level
    100

    Re: Issue communicating to Honeywell pressure sensor to I2C bus

    Required minimal SDA hold time after SCL falling edge is 0 for I2C. In so far, the timing is correct. You can expect the FTDI I2C API to give correct timing.

    - - - Updated - - -

    Review Honeywell I2C technical note https://sensing.honeywell.com/i2c-co...al-30may12.pdf

    The range of available I2C addresses suggests that Honeywell reads default address 0x38 as right adjusted 8-bit value rather than 7-bit value, a popular source of confusion with I2C devices. There's also a certain risk that your device has been shipped with a different I2C address. Worst case I would perform a complete address scan.

    - - - Updated - - -

    When there is no traffic on the I2C, then the bus should be idle.
    I2C idle means that both SCL and SDA are HIGH.
    This is not the case in your scope pictures.

    I'm not experienced with the FTDI I2C API....but from your scope signals it seems you miss to include I2C_START and I2C_STOP commands.
    Start is shown in post #1, third image.



    •   AltAdvertisment

        
       

  6. #6
    Newbie level 3
    Points: 34, Level: 1

    Join Date
    Oct 2018
    Posts
    5
    Helped
    0 / 0
    Points
    34
    Level
    1

    Re: Issue communicating to Honeywell pressure sensor to I2C bus

    The range of available I2C addresses suggests that Honeywell reads default address 0x38 as right adjusted 8-bit value rather than 7-bit value, a popular source of confusion with I2C devices. There's also a certain risk that your device has been shipped with a different I2C address. Worst case I would perform a complete address scan.
    So from the scope value this is correct for 0x38?

    Can you also explain the difference between 0x38 as a right adjusted 8-bit vs a 7 bit value?



  7. #7
    Newbie level 3
    Points: 34, Level: 1

    Join Date
    Oct 2018
    Posts
    5
    Helped
    0 / 0
    Points
    34
    Level
    1

    Re: Issue communicating to Honeywell pressure sensor to I2C bus

    Hi Klaus,

    When there is no traffic on the I2C, then the bus should be idle. I2C idle means that both SCL and SDA are HIGH.

    I have compressed the capture to fit the screen for clarity. The signals are at idle before the I2C signals and after the nACK from the Honeywell sensor.



  8. #8
    Super Moderator
    Points: 249,147, Level: 100
    Awards:
    1st Helpful Member

    Join Date
    Jan 2008
    Location
    Bochum, Germany
    Posts
    43,356
    Helped
    13182 / 13182
    Points
    249,147
    Level
    100

    Re: Issue communicating to Honeywell pressure sensor to I2C bus

    So from the scope value this is correct for 0x38?

    Can you also explain the difference between 0x38 as a right adjusted 8-bit vs a 7 bit value?
    According to my reading of the Honeywell document, you should send address bits 0011100(RW).



--[[ ]]--