here is my test case i want to write 16bytes with the values from 0x50 to 0x5F in the first 16byte page of a AT34C04 EEPROM conected to the I2C Bus.
Code: Select all
// write buffer out to ram so that dma can access it.
cacheBufferFlush(write_buffer, sizeof(write_buffer));
status |= i2cMasterTransmitTimeout(I2CP, RW_ADDRESS,
write_buffer, write_length + 1, nullptr, 0, WRITE_TIMEOUT);
writebuffer is 17bytes long with a 0 for the EEPROMs internal Address in byte 0 of the buffer an then followed by 0x50 - 0x5F.
An here is the problem:
the Address and the first byte are correct but then there is a additional 0????
This is the writebuffer how it is given to the i2cMasterTransmitTimeout function.
From the code of the i2cMasterTransmitTimeout function i can not see where the first 0 comes from. it just gives the buffer pointer to the dma. And i flushed the cache right before the call so data has to be in ram.
Anyone has an idea?
Thanks
Tec