アドレス部の先頭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
  • 返信ありがとうございます。
    E2Pのアドレスは波形を見るために仮で、実際は「0xA0」を使ってます。
    (BR24G04-3を使用で、マニュアルもアドレスは0xA0です。)

    リード時の送信をそのまま実行すると先頭bitが送信されずにACKが送られない現状がありましたが、
    変更後は、正常に「0xA0」が送信されACKも正常となりました。

    この変更後、E2PROMや温湿度センサなど全I2C機器の通信がすべて正常となったので、結果的には正しかったようです。

    コード生成ではMSBとLSBの設定がなく、MSB固定だったのでその影響かもしれません。
Reply
  • 返信ありがとうございます。
    E2Pのアドレスは波形を見るために仮で、実際は「0xA0」を使ってます。
    (BR24G04-3を使用で、マニュアルもアドレスは0xA0です。)

    リード時の送信をそのまま実行すると先頭bitが送信されずにACKが送られない現状がありましたが、
    変更後は、正常に「0xA0」が送信されACKも正常となりました。

    この変更後、E2PROMや温湿度センサなど全I2C機器の通信がすべて正常となったので、結果的には正しかったようです。

    コード生成ではMSBとLSBの設定がなく、MSB固定だったのでその影響かもしれません。
Children
No Data