余白 Copyright © 2018-2024 てきーらサンドム


■■■ SAM(Arm), PIC32C(Arm)マイコンの道標 ■■■

 SAMマイコン(MicrochipのArmコアMCU)を、XC32コンパイラと、Pickit4/Snapデバッガで使うサイトです。
 ドライバを自動生成してくれるMPLAB Harmony(v3)もリリースされてますが現時点ではUSBドライバの部分にしか使用してないです。まぁ、XC32もローエンドまでカバーできるようになり(v2.30〜)、Pickit4/Snapも大多数のSAM製品に正式対応(v5.35〜)となりましたので、ぼちぼち本腰を入れてやろうかなって感じです。
 PIC32C(ArmコアのPIC32)も今後取り上げていこうと思います(2023/2/7追記)。
 ともかくSAMファミリと開発ツールについて、注意点、使いこなしのポイント、落とし穴、裏技、雑学などを順次掲載します。
注:レジスタ設定を古いxc.hの定義(bit構造体定義)で説明している部分が残っています。この表記はデータシート表記に近いですが、新しいxc.くを使ったコーディングの表記とは異なりますのでご注意ください(【SFR名によるアクセス】参照)。

最近の更新以前の更新
2024/03/15 【デバッガ対応状況】を更新
2023/11/23 【デバッガ対応状況】、【コンパイラ対応状況】を更新
2023/08/17 【デバッガ対応状況】、【コンパイラ対応状況】を更新
2023/07/23 【デバッガ対応状況】、【コンパイラ対応状況】を更新
2023/02/01 全般(SAMx7x):【端子一覧(144pin)】を追加

 


●トピックス

開発ボードの販売について】 2021/12/16 更新
 SAMC21-can5実験ボードをマイコン技研で販売しています(「紹介ページ」)。
 
人生最後のマイコン選択】 2018/11/6 追加
 インテル4040から始まった私のマイコン人生もそろそろラストスパートとなりそうです(→当家マイコン史)。有終の美を飾れる選択をしたいものです。
 選択基準として特別変なことは願って無いつもりなのですが、全部満たしたマイコンが世の中に無いので悩みます。
  (1)1個からでも比較的安価に買えること。それも1品種だけでなく、ピン数、メモリ容量がある程度選べること。
  (2)無償の開発環境(メモリ制限の無いもの)、安価なデバッガ(エミュレータ)がそろっていること。
  (3)日本語の資料が揃っているのが望ましい
  (4)できればDIP品があること(特に40pin、28pin)。欲を言えば68pinPLCCが望ましい(2.54ピッチソケットが有るので)。
  (5)5V電源で使える品種もあること。
  (6)小売市場に産業品の流通在庫があること(これはRL78への苦言)。
 
 結局SAMを選択したのですが、脳内では激論が交わされ、最後の投票も僅差の接戦でした。以下は討論の様子です。
「もうRL78と心中でいいじゃん。最後(廃品)まで面倒見ようよ」(RL78継続派:10%)
「最後の一花を咲かせるんじゃ。それには64KB制限のコンパイラじゃダメだ」
「gcc使えば?」
「いまさら性能後退はNGじゃ。高速レスポンスを信条とする我が家のプログラムには合わんよ」
「RXにしようよ、128KBまでいけるよ。日本語の資料も充実しているし」(RX転換派:10%)
「今時128KBは少なかろう。だいたいデバイスがあんまり安くないし、選択肢も限られるぞ」
「そもそも我が家はNEC派だぞ。日立系のデバイスはやだよ」
「NEC派って言うけど1998年以降AVRで行くって決めてたじゃんか。この際AVRに戻ろうよ」(AVR回帰派:10%)
「今更かよ。だいたいAVR-gccはconst修飾で変数をROMに配置しないって方針(できないじゃ無くて意固地な開発者の方針)に嫌気がさしてやめただろう」
「そだそだ、最近XC8コンパイラがAVR対応したって聞いたから喜んでいたけど、中身はAVR-gccがそのまま入っていてがっかりした →(追記)XC8とAVR-gccが選択可能で、XC8を選択すればconst修飾でROM配置可能なようです(未確認)」
「将来に目を向けようよ。やっぱ世の中の流れはARMコアだよ。となるとSAMがいいんじゃないの」(SAM推進派:35%)
「いやいやPIC32の方が日本語資料が揃っているし、DIP品も28pinだけだけど安価に買えるし」(PIC32推進派:34%)
「うんうん、なんと言ってもV850と同じくMIPSアーキティクチャだしね。我が家にとっては馴染み深いよね」
「却下! 5V品種が無いファミリは却下だ。山のように築いた5VのK0RやRL78システムの置き換えが出来なくてどうするよ」
「5V動作のArmならルネサスシナジーもあるよ」(国産品死守派:1%)
「たけーよ(値段が)」、「日立系のペリフェラルはいやじゃ」、「マニュアルの全ページにでかでかと(参考資料)と書かれたものなんか読みたくない」→(追記)S124の場合
〜〜〜以下略〜〜〜
 という感じでSAMに至った訳ですが、PIC32抵抗勢力の火種も消えたわけではなく、PICkit4+XC32でSAMがサポートされるなら(つまりいつでもPIC32に手が出せる状態なら)という条件付の妥協となりました。でも、まぁ、とりあえずのお試しはAtmel studioを入れるしかないかもです。→(追記)結局Atmel stadioを入れる前にXIDEでのサポート始まりました(のたのたしているから^^;)。
 

 


●ハードウエア

品種構成 2019/12/9 更新
 最近の主要な品種を示します。最近のシリーズ名は、SAM+英字1文字+数字2桁で識別できます。
 最初のターゲットは、SAM C20 256KB 64pinの予定です。5V電源対応で、デジキーで1個購入時のお値段が300円(2018/11/6時点)です。→結局SAMC21 256KB 64pinになりました(2019/5/1追記)
 
Pin/ROM→ 8KB〜16KB 16KB〜256KB 256KB〜1MB    ウルトラ低電力   高性能
14/20/24pin D09 汎用、ローエンド
D10 汎用、基本機能
D11 汎用、基本+USB
 24/32pin
OPamp有
L10 基本機能
L11 保護機能強化
(16/32/64KB) 
一般向け
車載向け
(MediaLB対応)
32pin D20 汎用、基本機能
D21 汎用、基本+USB
C20 5V可、基本機能
C21 5V可、基本+CAN
32/48/
64
pin
OPamp有
L21 M0拡張機能
  +USB
(32〜256KB)  
M7拡張機能 S70
64/100/144pin
(512KB〜2MB)
V70
64/100/144pin
(512KB〜2MB)
48/64pin D51 拡張機能
E51 拡張+CAN
E53 拡張+イーサ
E54 拡張+CAN+イーサ
100pin C20 5V可、基本機能
C21 5V可、基本+CAN
 48/64/
100
pin
OPamp無し
L22 M0拡張機能
  +USB+LCD
(64/128/256KB)
M7拡張機能
+CAN
+イーサ
E70
64/100/144pin
(512KB〜2MB)
V71
64/100/144pin
(512KB〜2MB)
128pin
 Cortex M0+ (48MHz, L22のみ32MHz)  Cortex M23(32MHz)  Cortex M4F(120MHz)  Cortex M7(300MHz)
 

 


●資料室(マニュアル,ツールなどへのリンク,一般図書)

  〜〜〜 デバイスのマニュアル類(英文) 〜〜〜 

  〜〜〜 ツールのマニュアル類(英文、PIC32用含む) 〜〜〜 

  〜〜〜 日本語版資料(PIC32用含む) 〜〜〜 

  〜〜〜 一般図書 〜〜〜

  〜〜〜 関連ページへのリンク 〜〜〜

 


以前の更新
2023/01/29 資料室:SAMD5x/E5x, SAME70-V71, XIDE日本語ユーザーズガイドのリンク更新
2022/12/28 【コンパイラ対応状況】を更新
2022/11/07 【デバッガ対応状況】、【コンパイラ対応状況】を更新
2022/05/30 【コンパイラ対応状況】を更新
2022/05/20 【I2C】を更新
2022/01/16 【デバッガ対応状況】を更新
2021/12/19 【コンパイラ対応状況】を更新
2021/12/18 資料室:Snap, PICkit4 ユーザーズガイドのリンク更新
2021/12/16 回路例、注意点【SAMC21-can実験ボード(5版)】基板図を追加
2021/12/12 【コンパイラ対応状況】を更新
2021/07/16 周辺機能(SAMC2x, SAMD21)の【ADC】を更新
2021/07/15 【コンパイラ対応状況】を更新
2021/05/25 【デバッガ対応状況】、【コンパイラ対応状況】を更新
2021/02/16 回路例、注意点【SAMC21-can実験ボード(5版)】回路図を追加
2021/02/01 【X IDE備忘録】の漢字コード設定を更新
2021/01/27 Harmony v3 【隠れポートを表示させる方法】を追加
2020/11/06 【デバッガ対応状況】を更新。
2020/10/25 SAMD5x/SAME5xの【発振回路】,【クロック生成】および【UART】,【基本タイマ】を更新
2020/10/14 SAMD5x/SAME5xの【端子一覧(48-128pin)】を更新
2020/10/10 SAMD5x/SAME5xの【端子一覧(48-128pin)】,【発振回路】,【クロック生成】,【フラッシュ】,【メモリマップ】,【システムタイマ】,【多重割込み制御】を追加
2020/08/13 周辺機能(SAMD21)に【I2C】を追加
2020/08/10 【コンフィグレーション】を更新、【USBドライバをHarmonyから移植】を追加
2020/07/23 周辺機能(SAMD21):GCLKのクロック供給先を修正
2020/07/18 ハードウエアに周辺機能(SAMD21)を追加、コア(Cortex-M0+)にSAMD21の内容も反映
2020/07/15 全般(SAMC2x,D2x)に【端子一覧(SAMC2x, 32-64pin)】,【端子一覧(SAMD21, 32-64pin)】を追加
2020/06/14 【コンパイラ対応状況】日本語文字列リテラルに関して追記
2020/06/02 トピックスに【開発ボードの販売について】を追加
2020/05/20 【デバッガ対応状況】、【コンパイラ対応状況】を更新
2020/03/07 【デバッガ対応状況】を更新
2020/02/29 【コンパイラ対応状況】、【SAMC21_can4テストプログラム】を更新
2020/02/24 評価プログラムに【SAMC21_can4テストプログラム】を追加
2020/02/12 【SAMC20/C21ベース回路(64pin)】にグラフィックLCD拡張基板の回路図を追加
2020/02/04 周辺機能(SAMC2x)に【CAN】を追加
2020/01/26 【データフラッシュ】を更新、【データフラッシュ(L1x)】を追加
2020/01/12 周辺機能(SAMC2x)に【データフラッシュ】を追加
2020/01/06 全般(SAMC2x,D2x)に【端子一覧(100pin)】を追加
2019/12/31 【X IDE備忘録】を更新
2019/12/23 【発振回路】,【SAMC20/21ベース回路(64pin)】,【初期化、共通設定】を更新
2019/12/21 【SFR名(レジスタ名)によるアクセス】,【CPU制御関数】を更新
2019/12/18 資料室にXC32コンパイラ ユーザーズガイド(PIC32C/SAM用)を追加。
2019/12/09 【消費電流(L1x)】,【発振回路(L1x)】,【クロック生成 GCLK(L1x)】,【フラッシュ(L1x)】,【メモリマップ(L1x)】,【多重割込み制御(L1x)】を追加。
2019/12/09 【品種構成】ウルトラ低電力品と高性能品を追加。
2019/12/09 【SFR名(レジスタ名)によるアクセス】を更新
2019/11/16 SAMD09〜D11,L10/L11の機能比較、端子比較を追加。
2019/11/12 資料室にSAMD09のデータシート追加。
2019/11/12 【品種構成】D09を追加。
2019/11/10 【デバッガ対応状況】,【コンパイラ対応状況】を更新。
2019/08/14 【UART】にレジスタ設定例を追加。
2019/08/14 【デバッガ対応状況】,【コンパイラ対応状況】,【標準入出力ライブラリ】を更新。
2019/08/05 ・コンパイラ【CPU制御関数】を追加。
2019/07/28 【SAMC20/C21ベース回路(64pin)】回路図、基板図を更新。
2019/07/22 【プログラム基本構成】,【初期化、共通設定】,【ポートの設定】,【各周辺の設定手順概要】を追加。
2019/07/16 【X IDE備忘録】、【デバッガ(PICkit4, Snap)対応状況】を更新。
2019/07/14 【標準入出力ライブラリ】を更新。
2019/07/10 【標準入出力ライブラリ】を更新。
2019/06/30 【スタートアップ】、【標準入出力ライブラリ】を追加。
2019/06/30 【SAMC20/C21ベース回路(64pin)】回路図の32kHz発振回路定数変更。
2019/06/24 【SFR名(レジスタ名)によるアクセス】を更新。
2019/06/09 【割込フラグの立ち方】を追加。
2019/06/09 【クロック生成(GCLK)】に”レジスタ・アクセスの同期化処理”を追加。
2019/06/09 【SFR名(レジスタ名)によるアクセス】を更新。
2019/05/06 【SAMC20/C21ベース回路(64pin)】基板図、【デバッガ対応状況】を更新、【INTFLAGレジスタのbit構造体がリード・オンリ属性】を追加。
2019/05/01 【発振回路】、【クロック生成(GCLK)】、【デバッガ対応状況】を更新。
2019/04/28 【クロック生成】更新、【SAMC20/C21ベース回路(64pin)】32k発振関係更新。
2019/04/27 【SAMC20/C21ベース回路(64pin)】回路図、基板図を更新。
2019/04/21 【フラッシュ】,【コンフィグレーション】,【X IDE備忘録】,【SFR名(レジスタ名)によるアクセス】を追加。
2019/04/15 【機能比較(100pin)】,【端子比較(100pin)】,【32k発振端子に注意】(SAMD5x,E5x用)を追加。
2019/04/15 【端子比較(64pin)】を修正。
2019/04/07 【SAMC20/C21ベース回路(64pin)】に評価ボード基板図追加。
2019/03/30 【SAMC20/C21ベース回路(64pin)】に評価ボード回路図追加。
2019/03/24 【PICkit4(デバッガ)対応状況】,【XC32(コンパイラ)対応状況】を追加。
2019/03/24 資料室に開発ツール関係資料を追加。
2019/03/22 【多重割込み制御】を更新。
2019/03/10 【メモリ・アクセス】【システム・タイマ】【多重割込み制御】を追加。
2019/03/05 【発振回路】【クロック生成】【UART】【基本タイマ】【制御向きタイマ】を追加。
2019/02/24 【SAMC21ベース回路(64pin)】を追加。
2019/01/11 【端子比較(64pin)】を更新。
2018/12/25 【SAMC20ベース回路(64pin)】を追加。
2018/12/25 【端子比較(64pin)】を更新。
2018/12/16 【デジタル電源に配置されたアナログ入力端子に注意】を追加。
2018/12/16 【端子比較(64pin)】を更新。
2018/11/15 【PICkit4(デバッガ)とSAMマイコンの接続】を追加。
2018/11/04 ページ枠を新設。

マイコン技研