高田馬場の組み込みおやじ-電子工作、回路設計、ファーム TIPS

このブログは令和デバイス株式会社の菅原が、電気電子、電子工作、組み込みソフトウェアなどで、自分が苦労したところや面白い気づきなどを記事にしていきます。電子工作やマイコンに親しむ人が少しでも増えたらという思いでつづります。
やっぱり、電子工作が好きなんですよ。
nRF52 HFXOを使う
0
    nRF52 では 高速クロックとして、32Mhz水晶振動子または、オンチップオシレータを選択できる。

    普通にNordic提供のサンプルソースだと オンチップオシレータに設定されている。 何もなければこれでもいいんだけど、正確なタイミングで処理したいことがある場合、精度が±1.5% なので、使い物にならない。 そこで sd_clock_hfclk_request(); をコールすることにより、水晶振動子に切り替えられる。
    | 令和デバイス-菅原 | nRF5x Nordic | 14:54 | comments(0) | - |
    リセットに割り当ててある P0.21を GPIOとして使う
    0

      JUGEMテーマ:組み込み開発


      nRFが搭載されている太陽誘電の小さいタイプのBLEモジュールではIOが15本しかない。そのうち P0.05〜P0.08の4本はUARTに使いたいし、P0.21はリセット、P0.00,P0,01は水晶振動子付けたいこともあるので、8本になってしまう。そうなると リセット端子を使っていなければ解放したい。

       

      Nordic nRFシリーズの評価ボードや太陽誘電の評価ボードでは nRFの P0.21にリセット機能がアサインされている。

      当然GPIOとして使うことはできない。

      いままではリセット端子としてそっとしておいたけど、そうもいっていられなくなったので、これをGPIOとして使うこととする。

       

      ◆コンパイルオプションの変更

      ArmGCCであれば

      Makefileの次の行を外す

      CFLAGS += -DCONFIG_GPIO_AS_PINRESET
       

      Keil では C/C++の Preprocessor Symbols の Define でDCONFIG_GPIO_AS_PINRESETを削除する。

       

      ◆全消去から書き込み

      P0.21をリセット端子にするかどうかは UICRに設定されている。いったん書き込まれるとアプリケーションを書き換えるだけではこの領域は書き換わらない.

       

      nRFgoStudioで Erase all してから Softdeviceの書き込み、Program Applicationの書き込みを行う。

       

       

       

      | 令和デバイス-菅原 | nRF5x Nordic | 07:32 | comments(0) | - |
      nRF52 SPIのMISOピンをプルアップ設定にする
      0

        JUGEMテーマ:組み込み開発

         

        nRF52でADCをSPI通信で動かしているが、一点問題がでてきた。MISOピン(マイコンから見ると受信データ)のプルアップをしていないため、SSピンが LOでないときに MISO ピンがオープンになってしまう。

        nRF5xのIOポートは個別に プルアップ、プルダウン等の設定にできるのだけど、 Nordicから提供されているSPIのライブラリではMISOピンが プルアップ設定になっていないようだ。

        ライブラリを活用しているので、ライブラリで提供されている関数で行うのが美しい。

        かといって、MISOをプルアップにするオプションは見当たらなかった。

        そこで、 ペリフェラルの設定を直接変えることとした。

        青文字が追加した部分。

         

          nrf_drv_spi_config_t spi_config = NRF_DRV_SPI_DEFAULT_CONFIG;
            
            spi_config.ss_pin   = SPIM0_SS_PIN;
            spi_config.miso_pin = SPIM0_MISO_PIN;
            spi_config.mosi_pin = SPIM0_MOSI_PIN;
            spi_config.sck_pin  = SPIM0_SCK_PIN;
            spi_config.frequency    = NRF_DRV_SPI_FREQ_250K;                     
            spi_config.mode = NRF_DRV_SPI_MODE_1;

            APP_ERROR_CHECK(nrf_drv_spi_init(&spi, &spi_config, spi_event_handler,NULL));
            

            NRF_P0->PIN_CNF[SPIM0_MISO_PIN] |= (GPIO_PIN_CNF_PULL_Pullup<<GPIO_PIN_CNF_PULL_Pos);
         

        これにより、プルアップが効いて、SSがLO以外の時でも オープンになる事はなくなった。

         

        | 令和デバイス-菅原 | nRF5x Nordic | 10:58 | comments(0) | trackbacks(0) |
           1234
        567891011
        12131415161718
        19202122232425
        262728293031 
        << July 2020 >>
        + RECOMMEND
        + RECOMMEND
        + SELECTED ENTRIES
        + RECENT COMMENTS
        + RECENT TRACKBACK
        + CATEGORIES
        + ARCHIVES
        + つぶやき
        + MOBILE
        qrcode
        + LINKS
        + PROFILE