Look through your code
You had read volts and volts, two*3 byte only
Generally to read more bytes, Repeat the read action ...
... volts[i]= READ(); // read function here
You said want to read more 256 bytes
Where to read?
volts is 3*3=9 bytes
I have attached the example code. We can't do correct the array shown before we can't proceed to read more then 256 bytes from the slave.
Probably the slave is not configured to have more than 256 bytes red. I'm afraid you'll have to show us a bit more of your code since there is no limitation in I2C for the number of bytes to transmit.
If you can show your project(s) openly, we all could have a look at and will find any flaw easily. To do so, in Creator use "File -> Create Workspace Bundle" and attach the resulting files to your next posts (do NOT use Chrome, upload often doesn't work)
Ooopsi, I was too hasty! The I2C APIs only accept an uint8 as the count for master and slave.
Usual workaround is to read in smaller chunks and the slave has to manage setting up the source address for each chunk after the previous has been read.
We resolved the problem.
Our big mistake that we are using the function I2C_UDB_M_MasterReadBuf(), this function read entire buffer of data from a slave device within 255 bytes. It won't work for data more then 255 bytes.
It works well when we are using the function I2C_UDB_M_MasterReadByte(), we tested to read with 316 bytes and we checked all the data is correct.
The EzI2C slave has to configured for 16bit sub address for reading more than 256 bytes.
I2C Master Read API supports reading only 256bytes at time since the count is a uint8 type. So you need to call the MAster Read API multiple times, resetting the EzI2C offset address each time.