Hi,
Could you please tell me the update rate for P0 ~ P3 if using PCA9536 at 100-kHz in the standard mode and alternately writing 0 and 1 to the polarity Inversion register?
What is the maximum update rate when using only P0?
Best regards,
Kato
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hi,
Could you please tell me the update rate for P0 ~ P3 if using PCA9536 at 100-kHz in the standard mode and alternately writing 0 and 1 to the polarity Inversion register?
What is the maximum update rate when using only P0?
Best regards,
Kato
Hi Max-san,
Thank you for your response.
I am looking forward to getting the detailed information from you this week.
Best regards,
Kato
Hello Kato-San,
Everything I am about to say can be found in this datasheet in section 7.3 (pg. 13).
In order to calculate the time it takes to update P0~P3 we must first calculate the time it takes to send a byte of data to the Master or the Slave. Each bit sent or received by the Slave takes 1 clock pulse which would be 10us. For every byte sent or recieved by the Slave there must also be an acknowledge bit from either the Slave or the Master. This would take another clock pulse, so for every byte of Data it takes 9 clock pulses or 90us.
In order to program P0 there are 3 bytes that need to be sent. First the Master will send the address byte of the slave one bit at a time (MSB bit first). 7 bits of the address byte are used to address the Slave, the last bit is the R/W direction bit. A 1b in this position specifies a read and a 0b in this position specifies a write.
Next the Master will send a command byte which specifies which register the Master would like to communicate with. For instance if you would like to access the Polarity Inversion register you would send a byte of 02h. If you would like to change the output values of the port pins P0~P3 you would access the Output Port register which is 01h.
Lastly, you can send the data byte that you would like to write to the registers. The port pins can be configured at the same time using the Output Port register so there is no difference in time between configuring one port pin or all four port pins. In the same logic the Polarity Inversion register also only takes one data byte to completely change.
When all is said and done, it takes 3 bytes to successfully program any of the registers of the PCA9536 which equates to 270us. Finally at a minimum one clock pulse is needed for a start bit and another clock pulse is needed for a stop bit. This brings our final time to roughly 290us. If you were to continuously change the values of your registers you could theoretically change the values at around 3.4Khz, this value would obviously change depending on how long you spent in between programming registers.
I hope this helped, let me know if you have any further questions.
Best,
Chris
Hi Chris-san,
Thank you for the detailed explanation.
Could you please confirm just in case, but is my understanding correct that the maximum output frequency of P0 ~ P3 is about 1.72kHz by a formula "1/290 us/2" as PCA9536 needs 290us to write and update each register at 100 kHz?
Best regards,
Kato
Hey Kato-san,
It would take 3 bytes for the first time you set up the device to be an output in the configuration register and then the output register. After this, it would take only two bytes to write to the output port of the device and flip the bits.
-Bobby
Hi Bobby-san,
Thank you for your response.
I understand that it would take 3bytes for the first time to enable P0 ~ P3 as an output with the configuration register(register 3).
However, please tell me that reason why it would take only two bytes to write to flip the bits after this.
Best regards,
Kato
Hey Kato,
Sorry, I misspoke (I was thinking of a one register device for some reason and not this one specifically). Three bytes would be correct. Address+register+data would be the three you would need to send to flip the bits.
The first transaction would require Address+ configuration register set+ data, then the following transactions would be Address + output register + data (0x00h) then the next would be Address + output register + data (0xFFh), then back to Address + output register + data (0x00h) and repeat.
-Bobby