- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
添付ファイルのSingle Read Mode operationの動作をCYPRESSのAPIを使用して
実現できるのでしょうか?
書き込みが正しくできているか確認したいのですが、上手く関数が作れません。
ご教示ください。
解決済! 解決策の投稿を見る。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
はい、可能です。
添付いただいた日本ケミコンのNCM-03Vのアプリケーションノートを見る限り、通常のI2CのRead動作なので、問題なくCyU3PI2cReceiveBytes() APIで実装可能です。
ctrlMaskの2bit目を1にし、Start locationの位置をSingle Byte用に設定します。
I2Cでは、Read/Write動作はSlave addressに続いて指定されますので、リピートスタートコンディション(Sr)の後のSlave addressを格納しているバッファの最下位ビットを1に指定します。
以下、ご参考までにコード例を提示致します。
I2C Single Read Operation example code on FX3 |
---|
CyU3PReturnStatus_t sensorSingleReadOperation ( uint8_t slaveAddr, uint8_t regAddr, uint8_t buf) { CyU3PReturnStatus_t apiRetStatus = CY_U3P_SUCCESS; CyU3PI2cPreamble_t preamble; preamble.buffer[0] = slaveAddr; preamble.buffer[1] = regAddr; preamble.buffer[2] = slaveAddr | 0x1; preamble.length = 3; preamble.ctrlMask = 0x0002; /* Send start bit after 2nd byte (buffer[1]) of preamble. */ apiRetStatus = CyU3PI2cReceiveBytes (&preamble, buf, 1, 0); SensorI2CAccessDelay (apiRetStatus); return apiRetStatus; } |
上記のコード例を参考に動作するか試していただければと思います。
よろしくお願い致します。
Hirotaka Takayama
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
はい、可能です。
添付いただいた日本ケミコンのNCM-03Vのアプリケーションノートを見る限り、通常のI2CのRead動作なので、問題なくCyU3PI2cReceiveBytes() APIで実装可能です。
ctrlMaskの2bit目を1にし、Start locationの位置をSingle Byte用に設定します。
I2Cでは、Read/Write動作はSlave addressに続いて指定されますので、リピートスタートコンディション(Sr)の後のSlave addressを格納しているバッファの最下位ビットを1に指定します。
以下、ご参考までにコード例を提示致します。
I2C Single Read Operation example code on FX3 |
---|
CyU3PReturnStatus_t sensorSingleReadOperation ( uint8_t slaveAddr, uint8_t regAddr, uint8_t buf) { CyU3PReturnStatus_t apiRetStatus = CY_U3P_SUCCESS; CyU3PI2cPreamble_t preamble; preamble.buffer[0] = slaveAddr; preamble.buffer[1] = regAddr; preamble.buffer[2] = slaveAddr | 0x1; preamble.length = 3; preamble.ctrlMask = 0x0002; /* Send start bit after 2nd byte (buffer[1]) of preamble. */ apiRetStatus = CyU3PI2cReceiveBytes (&preamble, buf, 1, 0); SensorI2CAccessDelay (apiRetStatus); return apiRetStatus; } |
上記のコード例を参考に動作するか試していただければと思います。
よろしくお願い致します。
Hirotaka Takayama
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
ありがとうございます。
おかげさまでREADする事ができました。
但し、ある特定のアドレスだけ書き込みが出来ない状態です。
動作の一部を抜粋すると
/* Start up */
buf[0] = 0x00;
SensorWrite1 (0xDC, 0x03, buf);
SensorRead1 (0xDC, 0x03, buf2);
buf[0] = 0x00;
SensorWrite1 (0xDC, 0x59, buf); //output Hi-z release
SensorRead1 (0xDC, 0x59, buf2);
buf[0] = 0x04;
SensorWrite1 (0xDC, 0x1D, buf); //refgain0
SensorRead1 (0xDC, 0x1D, buf2); //refgain0 resd
buf[0] = 0x10;
SensorWrite1 (0xDC, 0x21, buf); //refgain4
SensorRead1 (0xDC, 0x21, buf2);
SensorWrite1 は私が作った関数で、0xDCがスレーブアドレスで2項目目がレジスタアドレス、3項目目がデータですが、
レジスタアドレスが、0x03,0x1D,0x21の時は書き込んだ値がリードできるのですが、0x59の時だけ何を書き込んでも
0x60が返ってきます。
関数内のリターンは書き込み時、読み込み時とも'0'が返ってきているので、正常に終了した状態です。
0x59が肝心のレジスタの為、これが下記変わらないので、イメージセンサーが動作しません。
今までにこのような事例はありませんでしょうか?
4月中に解決する必要があり、可能であればデバッグして頂けるところを紹介して欲しいくらいです。
以上、宜しくお願いします。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
APIの返り値としてSUCCESSが返って来ていますので、FX3としては宣言されたAPIでI2C Write, I2C Readを行っており、受信側である日本ケミコンNCM03-VからACK返ってきていると考えられます。
また、いかなる値を書いてもセンサから0x60 (Default値)が返ってくる点から、センサ側の何かしらの理由により値が書き換わっていない(またはDefault値に戻る?)のではないかと思われます。
そのため、今いただいている情報だけですと、FX3の問題ではなくセンサ側の問題(I2C通信を行う前までの電源立ち上がりタイミングシーケンス等?)に思えます。
日本ケミコンまたは日本ケミコンの代理店等にご連絡いただければと思います。
よろしくお願い致します。
Hirotaka Takayama
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
色々ありがとうございます。
延長のフレキを外すことで、PCLK等を確認する事ができるようになりました。
現在、
①PCLK,HSYMC,VSYNC,DATA[0:7]が確認できるようになった。
カメラを動かすとデータも変わる事を確認済みです。
②USB2.0からは何らかの信号は出ているが、USB3.0からは信号が出ていない。
③デバイスマネージャでカメラとしての認識はできている。
④
教えて頂いた情報で、
sensor.cのI2C部分を修正
uvc.cのMCLKの生成とSTDBY信号のLOW固定
の修正はしております。
添付にサンプルソフトの仕様と弊社の基板で実現したい仕様を纏めました。
日本ケミコンの仕様を実現する為に、何処をどのように修正したら良いかご教示ください。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
サンプルで提供しているDescriptor Fileで設定している解像度と異なるのでDescriptor File(cyfxuvcdscr.c)の修正が必要です。
Change Resolution in FX3 UVC Camera - KBA220269
USB 3.0で通信がないとのことですが、SuperSpeedでenumerationされているかご確認ください。
確認方法はいくつかあると思いますが、Windows USBViewでCurrent Config Valueを見ていただくというのが一つの方法です。
お手数おかけして申し訳ございませんが、これに関する質問は別のスレッドを作成しそちらで議論していただくようお願い申し上げます。
よろしくお願い致します。
Hirotaka Takayama