<<執筆中>>
PY32E407マイコンは,Puyaのラインアップの中で,現在のところ高機能な位置づけです.Puyaからレファレンスボードが発売されています.BoMや回路図データも公開されています.
ボード単体が持つ機能は,USBホスト&デバイスくらいでありシンプルなものですが,チップが持つ多くのピンが,ピンヘッダに引き出されているので,外部回路を用意してPY32E407を評価する使い方になるでしょう.
デバッガ機能はボード上に搭載されており,SWDでPY32E407にアクセスできます.
マイコン
主要スペック
CPU
最高170MHz駆動の32ビットArm Cortex-M4F(FPU,DSP)
メモリ
512Kバイトのデュアルバンクフラッシュメモリ(Read While Write)
144KバイトのSRAM
電源
電源電圧1.7~3.6V
その他
- 3つの内蔵オシレータ(16M,48M,40k)
- 3つの12ビットADC
- 2つの12ビットDAC
- 最高86個のI/O
低消費電力モード(Low-power mode)
通常動作モード(Run Mode)に加えて,次に示す5種類の低消費電力モードがあります.
Sleepモード
CPUクロックが停止している間も、周辺回路を動作させるように設定できます(NVIC,SysTickなど).
必須のモジュールのみを有効化し,処理終了後はそのモジュールを停止することが推奨されます.
Low-power Runモード
このモードでは,CPU動作周波数は2MHz以下に制限されます.独立したクロックを持つ周辺モジュールは,HSI16クロック で動作できます.
Low-power Sleepモード
このモードは Low-power Runモードから遷移させます.
CPUコアクロックは停止します.イベントまたは割り込みによってウェイクアップすると,システムは Low-power Runモード に復帰します.
Stopモード
このモードでは,SRAMおよびレジスタの内容は保持されます.
PLL,HSI16,HSEは停止します.VDDX電源ドメイン内のほとんどのクロックが無効になります.
次のモジュールによってStopモードから復帰できます.
- GPIO
- PVD(電圧監視)
- USB
- Ethernet(ETH)
- I²C
- LPUART
- IWDG(独立ウォッチドッグ)
- Low-power Timer
- COMP(コンパレータ)
- RTC
Standbyモード
VDDX電源ドメインは電源が切断されます.VCCDドメインとVBKPドメインのみ動作します.
PWR_CR3.RRS ビットを設定することで,SRAM2の電源を維持するかどうかを設定できます.
Standbyモードからの復帰条件
- NRSTピンによる外部リセット
- IWDGリセット
- RTCアラームによるウェイクアップ
- WKUPピンの有効エッジ検出
| モード | CPU | SRAM保持 | クロック | 復帰時間 | 消費電力 |
|---|---|---|---|---|---|
| Run | 動作 | ○ | 全クロック動作 | 即時 | 高 |
| Sleep | 停止 | ○ | 周辺回路は動作可能 | 非常に短い | ↓ |
| Low-power Run | 動作(最大2MHz) | ○ | 制限あり | 即時 | ↓↓ |
| Low-power Sleep | 停止 | ○ | 最小限 | 短い | ↓↓↓ |
| Stop | 停止 | ○ | PLL/HSI/HSE停止 | やや長い | ↓↓↓↓ |
| Standby | 停止 | △(設定依存) | ほぼ停止 | 長い | 最小 |
要点
- Sleep: CPUだけ停止
- Low-power Run: CPUを低速動作(最大2MHz)
- Low-power Sleep: 低速動作中にCPU停止
- Stop: SRAM保持したままほぼ全停止
- Standby: 最低消費電力。VDDX電源断、復帰時はほぼリセット起動扱い
Ethernet関連では、特に StopモードからETH(Ethernet)がウェイクアップソースとして使用可能 である点が特徴です。これは省電力待機中でもネットワークイベントによる復帰を実現できることを意味します。
VBAT電源入力を備えています.VCC電源が遮断された場合でも,VBKP(Backup)ドメインのみ動作を継続できます.
汎用入出力(GPIO)
各GPIOピンはソフトウェアで次の設定ができます.
- 出力(プッシュプルまたはオープンドレイン)
- 入力(フローティング,プルアップ/プルダウン,アナログ)
- ペリフェラル
このマイコンは,5Vトレラントのピンを多数持っています.
データシート上は,5VトレラントはFT(Five volt Tolerantと思われ)と表記されています.
3VトレラントはTT(Three volt Tolerant)と表記されています.主にアナログ関係のピンはTTになっています.
I/O設定をロックする機能があり,I/Oレジスタへの誤った書き込みを防ぐことができます.
GPIOの特徴を次に示します.
- I/OポートやAHBバスを介して読み書きできる
- 出力信号は,プッシュプルまたはオープンドレイン(プルアップ/プルダウン付き)を選択できる
- 出力信号は,出力データレジスタ(
GPIOx_ODR)またはペリフェラル(オルタネティブファンクションアウトプット)に接続する - 各I/Oの速度を選択できる
- 入力信号は,フローティング,プルアップ/プルダウン,アナログを選択できる
- 入力ピンの値を入力データレジスタ(
GPIOx_IDR)またはペリフェラル(オルタネティブファンクションインプット)に接続する - ビットセット・リセットレジスタ(
GPIOx_BSRR)でGPIOx_ODRへのビット単位の書き込みが可能 - I/Oポート設定を固定するためのロック機能(
GPIOx_LCKR)がある - アナログ機能
- オルタネティブファンクション選択レジスタ(各I/Oごとに最大16のオルタネティブファンクション)
- ピンマルチプレクシングにより,I/OピンをGPIOまたはペリフェラルとして使える
I²C(Inter-Integrated Circuit)
マイコンとシリアルI²Cバスとの通信を処理します.
このインターフェースはマルチマスタ機能を備えており,I²Cバス固有の次の機能を全て制御します.
- シーケンス制御(Sequencing)
- プロトコル制御(Protocol)
- バス調停(Arbitration)
- タイミング制御(Timing)
次のI²C通信モードをサポートします.
- Standard-mode(Sm)
- Fast-mode(Fm)
- Fast-mode Plus(Fm+)
I²Cの特長(I2C Features)
4系統のI²Cインターフェースを搭載します.
マスタモードおよびスレーブモードをサポートします.
次の通信速度をサポートします.
- Standard Mode(Sm):最高100kHz
- Fast Mode(Fm):最高400kHz
- Fast Mode Plus(Fm+):最高1MHz
マスタモード
クロック生成
SCLクロック信号を生成し通信を主導します.
Start条件およびStop条件を生成します.
スレーブモード
プログラム可能なI²Cアドレス検出機能
任意に設定したI²Cアドレスに対するアクセスを検出可能
デュアルアドレス機能
2つの異なるスレーブアドレスに応答可能
STOPビット(STOP条件)の検出
アドレッシングモード
次のアドレッシングモードをサポートします.
- 7ビットアドレスモード
- 10ビットアドレスモード
General Call(ゼネラルコール)
I²C規格で定義される General Callアドレス(0x00) に応答可能
ステータスフラグ(Status Flag)
送信/受信モードフラグ
現在のI²Cペリフェラルが送信モードか受信モードかを示します.
バイト転送完了フラグ
1バイトのデータ転送が正常に完了したことを示します.
I²Cビジーフラグ
I²Cバスが使用中(Busy状態)であることを示します.
エラーフラグ(Error Flag)
-
マスタアービトレーションロスト(Master Arbitration Loss)
マルチマスタ構成において、他のマスタとの競合に負けたことを示します. -
アドレス/データ転送後のACK失敗
スレーブからACK(Acknowledge)が返されなかったことを示します. -
Start/Stopエラー
START条件またはSTOP条件に関する異常を検出したことを示します. -
オーバーラン/アンダーラン
(クロックストレッチ機能が無効な場合)
受信データの取り込みが間に合わない(Overrun)
送信データの供給が間に合わない(Underrun) -
オプションのクロックストレッチ機能
必要に応じてクロックストレッチ(Clock Stretching)を使用できます. -
DMA対応の単一バイトバッファ
1バイトのデータバッファを備え,DMA転送に対応しています. -
ソフトウェアリセット機能
ソフトウェアからI²Cモジュールをリセットできます. -
アナログノイズフィルタ機能
SDA/SCLライン上の短いノイズを除去し,通信の信頼性を向上させます. -
SMBus対応
SMBus(System Management Bus)プロトコルをサポートします. -
低消費電力モード対応
Stopモード中でもI²C機能を利用でき,イベント発生時にはStopモードからのウェイクアップが可能です.
CAN
CAN2.0およびCAN FDインターフェースを1つずつ搭載しています.
CANバスコントローラは,バス上でのデータの送受信処理を行います.
CAN FDコントローラは,12グループのフィルタを備えています.アプリケーションプログラムは,バスへのデータ送信を担う1つのプライマリ送信バッファ(PTB)と3つのセカンダリ送信バッファ(STB)を使用して送信できます.送信スケジューラが各メールボックスの送信順序を決定します.アプリケーションは,バス上のデータを6つの受信FIFO(RB)を介して取得できます.このFIFOはハードウェアで制御されます.3つのSTBと6つのRBは,3ステージのFIFOと6ステージのFIFOです.
CAN FDバスコントローラはタイムトリガ通信にも対応しています.
- CAN2.0A/CAN2.0B/CANFDプロトコルを完全サポート
- CAN 2.0は最大1Mbit/sの通信ボーレートをサポート
- ボーレートは1~1/32 の範囲で柔軟に設定可能
- 6つの受信バッファ
— FIFOモード
— エラーや未受信データによって,格納済みのメッセージが上書きされることはない - 優先度の高いプライマリ送信バッファ(PTB)×1
- サブ送信バッファ(STB)×3
— FIFOモード
— 優先度調停モード - 独立したフィルタセット×16
— 11ビット標準IDおよび29ビット拡張IDをサポート
— プログラマブルなIDコードビットおよびマスクビット - PTBおよびSTBは,シングル送信モードをサポート
- サイレントモードをサポート
- ループバックモードをサポート
- 送信エラータイプの捕捉およびクォーラム障害箇所の特定をサポート
- エラー警告値のプログラム設定が可能
- ISO11898-4 タイムトリガCANおよび受信タイムスタンプをサポート
イントロ
CAN(Controller Area Network)サブシステムは,2つのCANモジュールと共有メッセージRAMで構成されています.これら3つのコンポーネントのベースアドレスは,メモリマッピングを参照してください.
CANモジュールは,ISO 11898-1:2015(CANプロトコル仕様 バージョン2.0 Part A/B)およびCAN FDプロトコル仕様 バージョン1.0(CAN with Flexible Data-Rate仕様 バージョン1.0)に準拠しています.
FDCAN1は,CANバスのCAN2.0(2.0A、2.0B)プロトコルに準拠しています.FDCAN2は,CANバスのCAN2.0(2.0A、2.0B)およびCAN FDプロトコルに準拠しています.
1.6 KBのメッセージRAMは,フィルタ(Rxフィルタ),受信FIFO(Rx FIFO),受信バッファ(Rxバッファ),送信イベントFIFO(TxイベントFIFO),送信バッファ(Txバッファ)の機能を実装可能です.このメッセージRAMは,FDCAN1モジュールとFDCAN2モジュールに共有されます.
- ISO 11898-1:2015規格に準拠
- CAN FDによる最大64データバイトの送受信をサポート
- CANエラーログ機能をサポート
- AUTOSARおよびSAE J1939をサポート
- 受信フィルタリング機能をサポート
- 設定可能な2つの受信FIFO
- 優先度の高いメッセージ受信時の個別信号通知
- 最大3つの専用受信バッファ
- 最大3つの専用送信バッファ
- 設定可能な送信FIFOまたはキュー
- 設定可能な送信イベントFIFO
- ホストCPUによるメッセージRAMへの直接アクセス
- FDCAN1およびFDCAN2モジュールによるメッセージRAMの共有
- プログラマブル・ループバック・テスト・モードのサポート
- マスク可能なモジュール割り込みのサポート
- 2つのクロック・ドメイン:CANコア・クロックおよびAPBバス・インターフェース・クロック
ピン割り当て
CANペリフェラルは次のピンに割り当てできます.
FDCAN1_RX:PA11,PB8,PD0,PE0
FDCAN1_TX:PA12,PB9,PD1,PE1
FDCAN2_RX:PB5,PB12,PE2
FDCAN2_TX:PB6,PB13,PE3
ソフトウェア初期化
ソフトウェアでの初期化処理は,まず FDCAN_CCCR.INIT ビットをセットします.ソフトウェアリセット,ハードウェアリセット,Bus_Off状態への移行によって, FDCAN_CCCR.INIT がセットされます.
FDCAN_CCCR.INIT がセットされると,CANバス上でのメッセージの送受信が停止し, FDCAN_TX ピンの状態はリセッシブ(ハイレベル)になります.エラーロジック管理ユニット(EML)のカウンタ値は保持されます.
FDCAN_CCCR.INIT をセットしても,設定レジスタの内容は変更されません. FDCAN_CCCR.INIT をクリアするとソフトウェア初期化が完了し,その後ビットストリーム処理ユニット(BSP)はバス上でのメッセージ送信と同期するために,11ビット連続のリセッシブビット(Bus_Idle)がバスに現れるのを待ちます.同期が完了すると,バス上での動作に参加し,メッセージの送信を開始します.
FDCAN 設定レジスタは, FDCAN_CCCR.INIT と FDCAN_CCCR.CCE の両方が設定されている場合にのみアクセス可能です. FDCAN 設定レジスタを次の表に示します.
参考文献
(1)Puya MCU,佐鳥電機
https://www.satori.co.jp/product/semiconductors/Puya_MCU.html
(2)公式リポジトリ
https://github.com/OpenPuya/PY32E407_Firmware/tree/master