アドレス部の先頭1bitが送信されない(I2C)

CPU : R5F52315AxFP
ツール : CS+forCC Ver8.02

現象 : アドレス部の先頭1bitが送信されない

内容 :
・コード生成を使用してI2Cバスインタフェースを、マスタで生成

・R_RIIC0_Master_Send()を使用して、「0x58(アドレス)」「0x00(データ)」を送信
    
    #define    I2C_E2P_ADDRESS                0x58
    ge2p_Write_Buffer[0] = 0x00;
    R_RIIC0_Master_Send(I2C_E2P_ADDRESS, ge2p_Write_Buffer, 1u);
    
・オシロスコープで波形(scope_0.png)を見る。(上側がSCL、下側がSDA)
・本来は9bit(8bit+ack)のハズが、8bitしかSCLが出ていない。
・SDAを見ると、アドレス部の先頭1bitが送信されず、1bitシフトされた形になっている

質問内容:
先頭の1bitが出力されないまま処理が進んでいる、もしくは、出力が出来なかったと思われるので、
コード生成で作成された「r_cg_riic_user.c」の修正が必要なのでしょうか?
その場合は、どの部分の修正が必要なのかを教えて頂けませんでしょうか?

Parents
  • I2Cの仕様書によるとアドレスは7ビット(Fast,Fast+ではオプションで10ビット)とされています。また、送信単位は8ビットとされています。

    なので、アドレスは7ビットで表し、MSB詰めで残りの1ビットはR/Wに割り当てられています。
    A6 A5 A4 A3 A2 A1 A0 R/W で8ビットです。

    関数 R_RIIC0_Master_Send はデータを送信するルーチンなので R/Wは常にWを表す’0’になるためにアドレスをビットシフトしているのでしょう。
Reply
  • I2Cの仕様書によるとアドレスは7ビット(Fast,Fast+ではオプションで10ビット)とされています。また、送信単位は8ビットとされています。

    なので、アドレスは7ビットで表し、MSB詰めで残りの1ビットはR/Wに割り当てられています。
    A6 A5 A4 A3 A2 A1 A0 R/W で8ビットです。

    関数 R_RIIC0_Master_Send はデータを送信するルーチンなので R/Wは常にWを表す’0’になるためにアドレスをビットシフトしているのでしょう。
Children
No Data