nRF24LEまたはこのチップをプログラムする別の方法を始めたきっかけ

XL24LE1-D01の腹にマーキングを施したモジュラー設計のNRF24LE1Eチップを手に入れました。

これらは次のとおりです。



画像



私はそれらを自分の実験に持っていきましたが、これはそれについてではありません。 このチップには、8051に基づいた独自のプロセッサが既に搭載されており、喜ばざるを得ないため、この選択肢が選ばれました。 データシートをめくると、何も起こらなかったようです。 例えば、私たちはそれを手に入れます-そして、私たちはそれを理解します。 そして今、私はモジュールを持っています。



私が最初に出会ったのは、それをプログラムする方法でしたか? 言い換えれば、ファームウェアをそれに書き込む方法は? データシートには、SPIポートを介したプログラミング手順の説明がありました。 いいね!



車輪を再発明する前に、私に何かを発明したことがあるかとGoogleに尋ねました。 結局のところ、彼らはそれを発明しました。 ローカルのMaksMSユーザーには、 「Raspberry PIおよびUSBaspを介したnRF24LE1のプログラミング」という出版物がありますが、 Raspberry PIを使用する方法、またはUSBaspの代わりとして使用する方法について説明しています。 最初のものはありませんが、2番目のものをこのような遠いコーナーに投げて、これらのAVR作品には決して戻らないと考えました。 しかし、運命、悪役は、私を引き戻しました。



それで、私はこのUSBaspを見つけて、提案されたファームウェアをそれに注ぎました。 ちなみに、問題なくWindows用のプログラマーソフトウェアを収集しましたが、収集しました。 MaksMS'omが提案した例を、ダイオードを点滅させて書き留めることさえできました。 しかし、それは信じられないほどの努力でした。 このすべては、それが単に嫌悪感を引き起こすほど急いで書かれています。 すべてが生で不安定です。 そして、非常にゆっくりと点滅します。



一般的に、私はそれについて何かをすることにしました。 私はずっと前からSTMの発案に切り替えており、STM32F103プロセスには非常に多くのスカーフがあります。 私は自転車を発明しようとすることにしました。 STM USB FSライブラリパッケージのDFUの例に基づいています。 この例には、スマートプログラミングユーティリティとドライバーが付属しています。







上のスクリーンショットは、内部フラッシュプロセッサに加えて、SPIとnRFもあることを示しています。 マザーボードにプロセッサとSPIフラッシュがはんだ付けされたので、そのままにしておくことにしました。 まあ、あなたは決して知らない。 また、nRFを追加のメモリ領域として追加しました。 もちろん、回避して0x14000000で既に「プロモート」しなければなりませんでしたが、特定のケースでは重要ではないと思います。







DFUファームウェア側では、このアドレスはもちろん破棄されます。



nRF24LE1チップを操作するための小さな「ドライバー」を追加しました。できれば、DFUインターフェースを介してフラッシュできます。 書き込み中に、「フラッシュはどのくらい消去されますか」などの質問が発生しました。10ミリ秒待ってRDYビットとWENビットのステータスを読み取る間、約3時間がかかります。 しかし、たとえば1ミリ秒という短い時間で待機すると、フラッシュの書き込み/消去操作がまったく終了しない場合があることに気付きました。 私は彼または何かをそらしていますか...



2番目の質問:「最大速度でSPIを使用してプロセスを操作できますか?」



SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; SPI_InitStructure.SPI_Mode = SPI_Mode_Master; SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64; SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; SPI_InitStructure.SPI_CRCPolynomial = 7; SPI_Init(SPI_SPI, &SPI_InitStructure);
      
      





分周器64、メインプロセッサの周波数は72MHzです。 これまでのところ、すべてがUSBaspよりも高速です。



それは、そうです、そしてそれはすべてです。 これが誰かを助けることを願っています。



そうそう! 接続方法について言及するのを完全に忘れました:



 #define SPI_SCK_PIN GPIO_Pin_13 /* PB.13 */ #define SPI_MISO_PIN GPIO_Pin_14 /* PB.14 */ #define SPI_MOSI_PIN GPIO_Pin_15 /* PB.16 */ #define SPI_CS_PIN GPIO_Pin_12 /* PB.12 */ #define SPI_PROG_PIN GPIO_Pin_10 /* PC.10 */
      
      





ここではすべてが明確だと思います。



ファームウェアのソースコードはここから入手でき、 GitHubから入手できます。 GCC ARMプラグインを使用したEclipseプロジェクト。



05/16/2015 + beresovskiyの推奨事項に関するプロジェクトソースにGitを追加



All Articles