こんにちは、おのみちです。
サンプルプログラム(rza2m_cam_disp_sample_freertos_gcc)においてI2Cでレジスタの設定値を読み出し出力させて確認したいのですが、プログラム上には書き込み関数しか存在しないため、読み出しの関数をRIICの使用書を参考にしてつくりました。
CTL_RIIC_READを使う場合、この書き方であっていますでしょうか?
ic_adrにはデバイスのアドレス、addrにはデバイス内の特定のアドレスを書き込んで使える関数としたいです。開発環境RZ/A2M
void RIIC_Read (uint8_t ic_adr, uint16_t addr, uint16_t size){
int_t ret; uint8_t result = 0; st_r_drv_riic_transfer_t i2c_read; i2c_read.device_address = ic_adr; i2c_read.sub_address_type = RIIC_SUB_ADDR_WIDTH_16_BITS; i2c_read.sub_address = addr; i2c_read.number_of_bytes = size; i2c_read.p_data_buffer = &result;
ret = control(hi2c2, CTL_RIIC_READ, &i2c_read);
printf ("result = %02X¥n",result);
}
ちなみに書き込む関数は以下のようなものです。
void RIIC_Write ( uint8_t ic_adr, uint8_t reg_adr_upper, uint8_t reg_adr_lower, uint8_t reg_data ){ int_t ret; st_r_drv_riic_transfer_t i2c_write;
i2c_write.device_address = ic_adr; i2c_write.sub_address_type = RIIC_SUB_ADDR_WIDTH_16_BITS; i2c_write.sub_address = (reg_adr_upper << 8) | reg_adr_lower; i2c_write.number_of_bytes = 1; i2c_write.p_data_buffer = ®_data;
ret = control(hi2c2, CTL_RIIC_WRITE, &i2c_write);
よろしくお願い致します。