Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

Other Technologies General Forum Discussions

maheswar
Level 1
Level 1
5 replies posted First reply posted First question asked

Hi sir,

We are currently working with IO extender (CY8C9520A) module and are experiencing some difficulties.

We are attempting to generate pwm signals while also attempting to halt pwm signals.

However, when we turn on the power, it generates pwm signals and then stops, but this does not happen every time.

1.We are not using external (XRES) pin. Is it mandatary to use this pin?

2.We used a 10Kohm pull up resistor for the SDA and SCL signals. Vdd we are giving 3v. is it  ok with 10k pullup resister?

with same code once device is working another time its reading chip id then stopping i2c communication We are not getting What is the problem? Could you please suggest a solution to this problem?

0 Likes
11 Replies
SampathS_11
Moderator
Moderator
Moderator
250 sign-ins 250 solutions authored 5 questions asked

Hello @maheswar ,

Judging by the description of the issues you faced, I suspect there may be some noise in the XRES line. You can try by connecting a 100pF or slightly more capacitor from XRES pin to VSS.

For SDA/SCL pull-up I request you to try with 4k7Ω resistors. And kindly do not exceed 100kHz for I2C clock.

If the issues persist, can you kindly attach a waveform of the I2C commuication?

Best regards,

Sampath

0 Likes

Hello, sir.

Thank you for your response.

We don't use the XRES pin.

Setting the i2c clock to 100 kHz and use a 5.1 kohm pull-up resistor.

What I noticed was that I just set a pin as an output and used a 2sec day to toggle between high and low.

After 6 to 7 iterations of high and low, it stops responding to the i2c and simply waits for the slave to reply. If the writing pin is high, the device behaves as if it were the last written data. If the writing pin is low, the device behaves as if it were the last written data.

i am not doing EEPROM configuration is this necessary required?

we just generate the pwm signals for this no need to use EEPROM right?

can you please suggest the how to resolve the issue.

Thanks 

 

0 Likes

Hello, sir.

We are still tackling the problem. We noticed that the io extender is holding the SDA line and that when the device is reset, the SDA line is released, and we checked that the i2c signals are all good. Could you possibly propose a solution to the problem?

Thank you

0 Likes
SampathS_11
Moderator
Moderator
Moderator
250 sign-ins 250 solutions authored 5 questions asked

Hello @maheswar ,

Can you kindly attach the I2C waveforms, and the I2C communication data, so that I can analyze what is going wrong. Right now, I am not able to identify the issue.

Best regards,

Sampath  

0 Likes

Hello, sir.

Please take a look at the i2c signals that I am sharing.

The colour lines SCL and SDA are yellow and pink, respectively.

after  transferring this data  sda is going lowafter transferring this data sda is going lowhere it is going low when we do reset its coming highhere it is going low when we do reset its coming highfull picfull pic

0 Likes

Hi sir ,

can you please check the i2c signals

Thank you

0 Likes
SampathS_11
Moderator
Moderator
Moderator
250 sign-ins 250 solutions authored 5 questions asked

Hello @maheswar ,

Can you kindly let me know the values which are sent in the first two bytes? I can see that the third byte value is 0.

Best regards,

Sampath 

0 Likes

Hi sir,

Thank you for the response.

we are not transferring three bytes, we are just the transmitting the 

sending to the slave address 0x21 and register address 0x2E next we raiding the data.

here i am sharing the code

uint8_t data[2] = {0x2E};

m_xfer_done = false;
err_code = nrfx_twim_tx(&m_twi, EXTENDER_SLAVE_ADDRESS, data, 1, false);

// here transmitting the register address
APP_ERROR_CHECK(err_code);
while(m_xfer_done == false);

m_xfer_done = false;
err_code = nrfx_twim_rx(&m_twi, EXTENDER_SLAVE_ADDRESS,data, 1);

// here  we are reading the slave address
APP_ERROR_CHECK(err_code);
while (m_xfer_done == false);

 

the sequence is like that

1.slave address with write bit 

2.register address

3.slave address with read bit

4. read data

 

Thank you sir.

if require i will post individual byte signals

 

 

0 Likes
SampathS_11
Moderator
Moderator
Moderator
250 sign-ins 250 solutions authored 5 questions asked

Hello @maheswar ,

 err_code = nrfx_twim_rx(&m_twi, EXTENDER_SLAVE_ADDRESS,data, 1); 

This command corresponds to the third byte in the full pic, I suppose. The third byte seems to be 0x01 from the image, but I was expecting  0x21 with read bit. Kindly let me know if my observation is correct.

Best regards,

Sampath

 

0 Likes
SampathS_11
Moderator
Moderator
Moderator
250 sign-ins 250 solutions authored 5 questions asked

Hello @maheswar ,

Can you kindly let me know the values which are sent in the first two bytes? I can see that the third byte value is 0.

Best regards,

Sampath 

0 Likes

Sorry, the third byte is 0x01. 

0 Likes