I2Cで1バイトのアドレスの送信

Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
user_3987996
Level 3
Level 3
25 replies posted 10 replies posted 5 replies posted

AN75779のサンプルコードはイメージセンサーに2バイトのアドレスでの送信になっていますが、

使用するイメージセンサーは1バイトのアドレスなので、書き換えたいのですが

サンプルコードでSensorWriteの関数を

preamble.buffer[0] = slaveAddr;

preamble.buffer[1] = highAddr;

preamble.buffer[2] = lowAddr;

preamble.length    = 3;

preamble.ctrlMask  = 0x0000;

apiRetStatus = CyU3PI2cTransmitBytes (&preamble, buf, count, 0);

となっているところを

preamble.buffer[0] = slaveAddr;

preamble.buffer[1] = highAddr;

preamble.length    = 2;

preamble.ctrlMask  = 0x0000;

apiRetStatus = CyU3PI2cTransmitBytes (&preamble, buf, count, 0);

といように書き換えればいいでしょうか?

0 件の賞賛
1 解決策
HirotakaT_91
Moderator
Moderator
Moderator
500 replies posted 250 replies posted 100 replies posted

はい、その変更により1バイトアドレスのイメージセンサーとの通信に対応出来るようになります。

結局は、CyU3PI2cTransmitBytes() でI2Cスレーブにデータを書き込むので、このAPIが使いやすいように関数にデータを渡してあげれば良いです。

APIの詳細は、C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\doc\firmware\FX3APIGuide.pdf 等でご確認いただけます。

よろしくお願い致します。

Hirotaka Takayama

元の投稿で解決策を見る

0 件の賞賛
3 返答(返信)
HirotakaT_91
Moderator
Moderator
Moderator
500 replies posted 250 replies posted 100 replies posted

はい、その変更により1バイトアドレスのイメージセンサーとの通信に対応出来るようになります。

結局は、CyU3PI2cTransmitBytes() でI2Cスレーブにデータを書き込むので、このAPIが使いやすいように関数にデータを渡してあげれば良いです。

APIの詳細は、C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\doc\firmware\FX3APIGuide.pdf 等でご確認いただけます。

よろしくお願い致します。

Hirotaka Takayama

0 件の賞賛
lock attach
Attachments are accessible only for community members.

別スレッドでのMCLKとSTDBY信号は上手く動きました。

I2Cが上手く動きません。

1バイト送信する関数をSensorWrite1という名前で作成しました。

ビルドでのエラーは無いのですが、APIを正しく使えてないようで、波形を確認すると

同じデータを送っています。

Sensor.cのファイルを添付すます。

イメージセンサーに必要な処理をStep2_PLL_Timingの関数にまとめました。

例として

SensorWrite1 (SENSOR_ADDR_WR, 0x03, 0x00);

の場合

0x03アドレスに0x00のデータを書き込みたいです。

何処が悪いのかご教示ください。

0 件の賞賛

この件は自己解決しました。

0 件の賞賛