これらの落とし穴があるのは cc2652 だけではなく、cc26xx シリーズにも存在すると推定されています。
CCS プリコンパイル済みマクロ構成の場所
クロック取得
クロック get__STATIC_INLINE uint32_t SysCtrlClockGet(void) は sys_ctrl.h にあり、sys_ctrl.h はプロジェクト パスの下になく、SDK にあります。
ティック時間は ICall_getTicks() によって取得されます。単位は 10us で 1 ずつ増加します。ICall_getTickPeriod() の単位は 10us です。
コールバック関数の設定
コールバック関数を設定するには 2 つの方法があります。1 つは .syscfg のコールバック関数で設定するか、NULL に設定してプログラム内で GPIO_setCallback を使用してコールバック バインディングを行います。
上記のどの方法を使用する場合でも、GPIO_enableInt(CONFIG_GPIO_IRQ_3993) の前に GPIO_init() を追加する必要があります。そうしないと、割り込みに入ることができません。
IRQ は ENEXTIRQ でレベルを取得する必要があります
公式参考ドキュメント: /ti/simplelink_cc13x2_26x2_sdk_5_20_00_52/docs/drivers/doxygen/html/_g_p_i_o_8h.html
ナノ秒遅延
CC2652 の最大 48M 水晶発振器によって制限されるため、ns レベルの遅延を達成することは不可能であり、最速のものでも次のように 62ns の遅延しか達成できません。
/* ループあたり 3 サイクル: 1 ループ @ 48 Mhz ~= 62 ns ; 8 ループ @ 48 Mhz ~= 0.5 us */
CPUlay(1);
SPIと低消費電力
CC2652 の SPI ノーマル モード リファレンス ファイル: ti/simplelink_cc13x2_26x2_sdk_5_20_00_52/docs/drivers/doxygen/html/_s_p_i_8h.html
CC2652 SPI DMA モードのリファレンス ファイル: ti/simplelink_cc13x2_26x2_sdk_5_20_00_52/docs/drivers/doxygen/html/_s_p_i_c_c26_x2_d_m_a_8h.html
SPI 通信では高周波の水晶発振子を使用しているため、SPI 通信中にデバイスはスタンバイ状態に移行できませんが、SPI_transferCancel()を呼び出した後にスタンバイ状態に移行することができます。
SPI_open(CONFIG_SPI_3993, &SPIparams) の CONFIG_SPI_3993 は .syscfg で構成されます
メインおよびコプロセッサの多重化 SPI の問題
テスト後、メイン コプロセッサは GPIO (SPI を含む) を再利用できません
メイン プロセッサが SPI ピンを設定した後、コプロセッサの初期化が呼び出されると、ピンはコプロセッサによってプリエンプトされます。メイン プロセッサのピンは Board_initGeneral(); で設定されますが、Board_initGeneral(); が呼び出された場合は、 2 回目; プリエンプションによりクラッシュが発生します。
現在のテスト結果では、コプロセッサがオフになると制御が自動的にメイン プロセッサに移されるはずですが、これについてはさらなる検証が必要です。
DAC搭載
負荷容量はuAレベルと比較的弱く、電圧型MOS管を駆動するには少し手間がかかります。
ピン配置
ピン設定には GPIO_write メソッドまたは PIN_setOutputEnable メソッドを使用できます。
DIO31 が出力として設定されている場合、プログラムは Board_initGeneral() でクラッシュします (これは非常に奇妙であり、予期すべきではありません)。現在、ピンを DIO26 として設定すると、