タッチパネル感知#1-プロジェクト準備


インポート


私の入力装置はよかったです.
自分の好みを抑えきれず、まずはタッチパネルモジュールを購入.
Azoteq IQS55EV02
エヴァセットのようです
そしてバニラを掘りました.
ハブアドレス
たゆまず頑張ればよかったのに...

開発環境

  • Segger embedded studion
  • nRF52-DK
  • nRF5 SDK v16.0.0
  • RTT Viewr
  • Azotec IQS550EV02-S
  • プロジェクトの設定


    まず、最も簡単な例twi scannerを持ってきました.
    nRF52_SDK_16.0.0_98a08e2\examples\peripheral\twi_scanner
    上へ行くとあります.
    私は通常、SDKフォルダの真下に私のフォルダを作成します.
    nRF52_SDK_16.0.0_98a08e2\flimbs\20210515_azotec_iqs550ev02\twi_scanner
    同じ方法で使用します.
    twi_scanner\pca10056\blank\ses\twi_scanner_pca10056.emProject
    まずRTTでログsdk configを撮りますh修正を開きます.すべての例では、UARTログがディレクトリであることが示されています.UARTも消して
    NRF_LOG_BACKEND_RTT_ENABLED 1
    NRF_LOG_BACKEND_UART_ENABLED 0
    SEGGER_RTT_CONFIG_BUFFER_SIZE_UP 4096 //로그 버퍼를 키운다.

    羽毛ハブの設定


    .gitignoreを設定します.
    この配置が悪いと、後で大歓楽パーティーが開かれます.
    stmなど他の項目の欠点を参照してください.
    *.axf
    *.swp
    *.htm
    *.Inp
    *.map
    *.tra
    *.dep
    *._2i
    *.l2p
    *.__i
    *.fed
    *.crf
    *.d
    *.o
    *.lst
    *.lnp
    *.bak
    *.scvd
    
    *.ini
    *.iex
    *.sct
    *.uvgui.*
    *.uvguix.*
    *.tmp
    **/JLinkLog.txt
    **/_viminfo
    **/_vimtags
    _build/
    RTE/
    
    ## Segger Embedded Studio ##
    *.jlink
    *.emSession
    **/ses/Output/
    
    ## Visual Studio Code ##
    .vscode/
    .history/
    
    ##STM##
    *.dep
    *.pdb
    *.spy
    *.stw
    *.wdb
    *.wed
    Debug
    Release
    
    *.rej
    このアイテムはGitにSDKをアップロードし、別のSDKにコピーしますが、テスト用のアイテムは各アイテムに1つのSDKを頭文字として送信し、各アイテムに1つのブランチを取ります.

    I 2 Cアドレススキャン


    そうですが、接続線だけで、先ほどロードしたサンプルアイテムを実行します.
    もちろん、デバイスアドレスはドキュメントを参照してください.しかし、プロジェクトを作成できて嬉しいので、実行しましょう.
    看板には溶接可能なポートがあります.
    RDY、RST、GND、3 V 3、SCL、SDAと書いてあります.
    SCLとSDAは通信線で、
    VCC GNDはドキュメント接続を見ています.3.3V.
    nRF 52 DKは3.3 V(高さ2.9 V)であった.港があります.それを使いましょう
    RSTポートがあります.よくこれを高いところに置いて回る人がいます
    RDYは断線のようです.
    一応無理にやった

    ガガ...
    接続にエラーがないか確認します.このとき直読ペンがあると役に立ちます.

    DKに間違いはないことが確認されました.
    先ほどから気になっていたRSTポートをドキュメントで探します.
    EVAキットなので、ドキュメントがよくできています.
    まず見つけられる.
    IQS 550 EV 02データシートキットの全面仕様ドキュメント
    IQS 5 xx-B 000データテーブルプロトコル、使い方などのドキュメント
    Arduino Exampleの実際の動作のアドゥエノの例
    このほか、まずRSTピンに集中して、ブートドキュメントや設定用のプログラムなどのファイルを見つけることができます.
    実際のプロトコルを記述する文書はIQS 5 xx-B 000データテーブルである.

    リセットについての内容です.私たちが見たのはNRST PINで、アクティブなLowなので、Highに変えて再テストしてみます.
        nrf_gpio_pin_dir_set(PIN_RST,NRF_GPIO_PIN_DIR_OUTPUT);//RST 핀을 Output으로 설정
        
        nrf_gpio_pin_write(PIN_RST,1); //RST핀을 High로 변경
        
        for (address = 1; address <= TWI_ADDRESSES; address++)//1에서 127까지 RX를 던져 ACK 가 나오는지 확인
        {
            err_code = nrf_drv_twi_rx(&m_twi, address, &sample_data, sizeof(sample_data));
            if (err_code == NRF_SUCCESS)
            {
                detected_device = true;
                NRF_LOG_INFO("TWI device detected at address 0x%x.", address);
            }
            NRF_LOG_FLUSH();
        }    
    
        if (!detected_device)
        {
            NRF_LOG_INFO("No device was found.");
            NRF_LOG_FLUSH();
        }
    
    結果は!

    失敗!
    どうしたんですか.
    書類を見直す.Suspendエントリに不審な内容があります.

    怠惰状態に入ると、1番目のI 2 C要求がNCKを送信し、150 us目に入る2番目の要求がACK応答を行う.
    ゲートのスキャンは1回に1回しかスキャンされないので、NCKが入ってくるのは当然です.
    for文で2回アドレスをスキャンするように変更します.
       nrf_gpio_pin_dir_set(PIN_RST,NRF_GPIO_PIN_DIR_OUTPUT);    
       
       nrf_gpio_pin_write(PIN_RST,1);
    
       for (address = 1; address <= TWI_ADDRESSES; address++)
       {
         for(uint8_t i=0; i<2; i++)//두번돌림
         {
           err_code = nrf_drv_twi_rx(&m_twi, address, &sample_data, sizeof(sample_data));
           if (err_code == NRF_SUCCESS)
           {
               detected_device = true;
               NRF_LOG_INFO("TWI device detected at address 0x%x.", address);
           }
           NRF_LOG_FLUSH();
         }
       }    
    
       if (!detected_device)
       {
           NRF_LOG_INFO("No device was found.");
           NRF_LOG_FLUSH();
       }
    
    結果は...

    ヤル!
    今日の挿入履歴
    テスト1->アドレスが見つかりません->DKアクションを検証して論理拡張子に->ドキュメントを確認してRSTピンの使い方を検証->RST Highに切り替えるに変更
    テスト2->アドレスが見つかりません->ドキュメントをチェックしてI 2 C Wakeエントリをチェック->コードをループで2回RXに変更
    テスト3->アドレスの検索
    思ったより長かったけど、実はこの友達の状況はちょっと特別だった.
    通信による問題の多くは、マニュアルをよく見ていないためだ.
    私も最初は何度か苦労したことがありますが、マニュアルを2、3回見てから始まりました.
    今は楽しくするためのコードなので、虫を作るのですが….
    先にここに提出してください.
    次に付属のサンプルコードを分析し、本物のデータを宝物にします.