FT4222デバイスを使用してI2CでMAX77651をプログラミングしています。私はレジスタに書き込むことができるようにしたい。I2C書き込みプロトコル:レジスタへの書き込み方法?
私はレジスタを読み取ることができるので、ハードウェアに問題はありません。レジスタを読み込むには、次のように進んでください。最初にレジスタを送信します。
私は書き込みたいと思っている場所にレジスタを送信しようとしていますが、私はレジスタに入れたいデータを送ります。しかし、私はこれを読んでチェックすると、期待した結果が得られません。ここで
は私が読み書きしようとするプログラムの開発の一部です:
uint8 resultat=0x11;
uint8 *p_resultat=&resultat;
int chiffre = 8;
uint16 bytesToWrite2 = 1;
uint16 bytesWritten2=1;
uint8 valeur= 0x06; // Adress of register
uint8 *p_valeur=&valeur;
uint16 slaveAddr = 0x48;
// ***** reading test of 0x06 : expected value : 0xFF
FT4222_I2CMaster_Write(ftHandle,slaveAddr,p_valeur,
bytesToWrite2,&bytesWritten);
chiffre = FT4222_I2CMaster_Read(ftHandle,slaveAddr,p_resultat,1, &bytesRead);
printf("The content of the register %02X is : %02X \n " , valeur , resultat);
printf("reading success if : %d = 0 \n " , chiffre);
//********** Writting test to the register 0x40
***********************************************//
valeur = 0x40;
FT4222_I2CMaster_Write(ftHandle,slaveAddr,p_valeur,
bytesToWrite2,&bytesWritten);
valeur = 0x1F;
FT4222_I2CMaster_Write(ftHandle,slaveAddr,p_valeur,
bytesToWrite2,&bytesWritten);
//*************** Reading of the register 0x40
*******************************************//
valeur= 0x40;
FT4222_I2CMaster_Write(ftHandle,slaveAddr,p_valeur,
bytesToWrite2,&bytesWritten);
chiffre = FT4222_I2CMaster_Read(ftHandle,
slaveAddr,p_resultat,1, &bytesRead);
printf("The content of the register %02X
is : %02X \n " , valeur , resultat);
printf("reading success if : %d = 0 \n " , chiffre);
このコードは、レジスタ0x40の中で私の1Fを示すべきであるが、それはそうではないですが、ここで私が得るものです:
The content of the register 06 is : FF
reading success if : 0 = 0
The content of the register 40 is : 00
reading success if : 0 = 0
私の質問は簡単ですが、私は何をすればいいのですが、どのような順序で正しく登録してください?
Ps:私は、FT4222について主に構成されていて、私の問題を解決するものは何もないので、私のコード全体を入れませんでした。
レジスタアドレスとデータを同じ書き込み命令で送信してくれてありがとう。それが解決策でした。 –