Community Translation - I2C Master Implementation in PSoC® 5LP using Low-level APIs - KBA223957

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Kenshow
Level 8
Level 8
Distributor - Marubun (Japan)
50 solutions authored 25 solutions authored 10 solutions authored

Hi,

I would like to translate KBA223957 into Japanese.

Thanks,

Kenshow


Original KBA:

I2C Master Implementation in PSoC® 5LP using Low-level APIs - KBA223957

Translated by Kenshow

==============================

タイトル: 低レベルAPIを使用したPSoC® 5LPでのI2Cマスターの実装 - KBA223957

バージョン:**

質問:

どのように低レベルAPIを使用してPSoC® 5LPでI2Cマスターを実装すればよいのでしょうか?

回答:
I 2 Cスレーブメモリデバイスとの通信の使用例では、次のコードスニペットを使用します。

1. 書き込みトランザクション

例えば:

メモリデバイスのスレーブアドレス: 0x08

メモリのアドレス: 0x00

送信されるバイト数: 5

送信されるデータ: 1、2、3、4、5

#define SLAVE_ADDRESS (0x08u)

#define SUB_ADDRESS_LOCATION (0x00u)

#define SUB_ADDRESS_LENGTH (0x01u)

#define WRITE_DATA_LENGTH (5u)

#define WRITE_DATA_BUFFER_LENGTH (WRITE_DATA_LENGTH + SUB_ADDRESS_LENGTH)

uint8 i = 0;

      uint8 status = 0;

/* 書き込みバッファにサブアドレスの場所と送信するデータをロードします */

            uint8 write_data_buffer[WRITE_DATA_BUFFER_LENGTH] = { SUB_ADDRESS_LOCATION , 1 , 2 , 3 , 4 , 5 };

/* 開始条件とスレーブアドレスを送信し、その後に書き込みビットを送信します */

           status = I2C_MasterSendStart(SLAVE_ADDRESS, I2C_WRITE_XFER_MODE);

            /* マスターステータスにエラーがないかどうかを確認します */

            if(status == I2C_MSTR_NO_ERROR)

      {

                  for(i=0; i<WRITE_DATA_BUFFER_LENGTH; i++)

        {

/* 最初に書き込みバッファにロードされたスレーブに書き込まれるデータを送信します */

                status = I2C_MasterWriteByte(write_data_buffer);

                   /* マスターステータスにエラーがないかどうかを確認します */          

                 if(status != I2C_MSTR_NO_ERROR)

       {

                      break;

       }

    }

/* トランザクションの完了後に停止条件を送信します */

I2C_MasterSendStop();;

2. 読み込みトランザクション

例えば:

メモリデバイスのスレーブアドレス: 0x08

メモリのアドレス: 0x00

読み取るバイト数: 5

#define SLAVE_ADDRESS (0x08u)

#define SUB_ADDRESS_LOCATION (0x00u)

#define SUB_ADDRESS_LENGTH (0x01u)

#define READ_DATA_LENGTH (5u)

uint8 i = 0;

      uint8 status = 0;

/* 書き込みバッファにサブアドレスの場所をロードします */

            uint8 write_data_buffer[SUB_ADDRESS_LENGTH] = { SUB_ADDRESS_LOCATION };

/* 読み取りバッファを初期化します */

            uint8 read_data_buffer[READ_DATA_LENGTH];

/ * 開始条件とスレーブアドレスを送信し、その後に書き込みビットを送信します */

       status = I2C_MasterSendStart(SLAVE_ADDRESS, I2C_WRITE_XFER_MODE);    

            /* マスターステータスにエラーがないかどうかを確認します */

            if(status == I2C_MSTR_NO_ERROR)

     {

               for(i=0; i< SUB_ADDRESS_LENGTH; i++)

               {

     

                   /* サブアドレスを送信します */

                   status = I2C_MasterWriteByte(write_data_buffer);

                  /* マスターステータスにエラーがないかどうかを確認します */

                  if(status != I2C_MSTR_NO_ERROR)

        {

                       break;

        }

     }

       /* 開始条件とスレーブアドレスを送信し、その後に読み取りビットを送信 */

      

        status = I2C_MasterSendRestart(SLAVE_ADDRESS, I2C_READ_XFER_MODE);

         

           /* マスターステータスにエラーがないかどうかを確認します */

  

     if(status == I2C_MSTR_NO_ERROR)

     {

                for(i=0; i<(READ_DATA_LENGTH-1); i++)

        {

   

                        /* スレーブから読み取ったデータを読み取りバッファにロードし、その後にACKを続けます */

                        read_data_buffer = I2C_MasterReadByte(I2C_ACK_DATA);

        }

                 /* スレーブから最後に読み取られたデータを読み取りバッファにロードし、その後にNACKを続けます */

                  read_data_buffer = I2C_MasterReadByte(I2C_NAK_DATA);

     }

     }

     /* トランザクションの完了後に停止条件を送信します */

     I2C_MasterSendStop();

APIの詳細については、I 2 Cコンポーネントデータシートを参照してください。

注: WriteBuf()ReadBuf()などの高レベルAPI は、低レベルAPIと組み合わせて使用​​しないでください。

==============================

7-May-2020

Kenshow

0 Likes
1 Reply
JennaJo
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

Hello, Kenshow-san

We receive your translation, it will be published to KBA to Community.

After upload, You will receive the points as the word of KBA.

Due to the current delay of internal review, Please bear with me for the delayed the response.

It could be delayed, but it will be processed soon.

Thanks for your contribution to CDC!

Will keep you update the status.

Thanks,

Jenna Jo

Jenna Jo
0 Likes