0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PY32E407V1xT_START CAN

0
Last updated at Posted at 2026-08-15

<<執筆中>>

 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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?