- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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?
- Tags:
- cy8c9520a
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi sir ,
can you please check the i2c signals
Thank you
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sorry, the third byte is 0x01.