10. I/Oポート

10. I/Oポート

10.1 GPIO概要

CH559は45のI/Oピンを提供しますが、いくつかのピンは代替機能を持っています。それらの中で、ポートP0~P3の入出力とP4の出力はビット単位でアクセスすることができます。

ピンが代替機能として構成されていない場合、デフォルトは汎用I/Oピンの状態です。汎用デジタルI/Oとして使用する場合、すべてのI/Oポートは真のリードモディファイライト命令を持っています。SETBやCLRなどのビット操作命令をサポートし、特定のピンやポートレベルの方向を独立して変更することができます。

10.2 GPIOレジスタ

このセクションのすべてのレジスタとビットは、共通のフォーマットで表現されています。小文字の"n"はポートのシリアル番号(n = 0, 1, 2, 3)を表します。小文字の"x"はビットの通し番号(x = 0, 1, 2, 3, 4, 5, 6, 7)を表しています。

表10.2.1 GPIOレジスタ一覧

名前アドレス概要リセット値
P080hP0ポート入出力レジスタFFh
P0_DIRC4hP0ポート方向制御レジスタ00h
P0_PUC5hP0ポートプルアップ許可レジスタ00h/FFh
P190hP1ポート入出力レジスタFFh
P1_IEB9hP1ポート入力許可レジスタFFh
P1_DIRBAhP1ポート方向制御レジスタ00h
P1_PUBBhP1ポートプルアップ許可レジスタFFh
P2A0hP2ポート入出力レジスタFFh
P2_DIRBChP2ポート方向制御レジスタ00h
P2_PUBDhP2ポートプルアップ許可レジスタFFh
P3B0hP3ポート入出力レジスタFFh
P3_DIRBEhP3ポート方向制御レジスタ00h
P3_PUBFhP3ポートプルアップ許可レジスタFFh
P4_OUTC0hP4ポート出力レジスタ00h
P4_INC1hP4ポート入力レジスタ(読み込み専用)FFh
P4_DIRC2hP4ポート方向制御レジスタ00h
P4_PUC3hP4ポートプルアップ許可レジスタFFh
P4_CFGC7hP4ポート制御レジスタ00h
P5_INC7hP5ポート入力レジスタ(読み込み専用)00h
PIN_FUNCCEhピン機能選択レジスタ00h
PORT_CFGC6hポート制御レジスタ0Fh
XBUS_SPEEDFDhバススピード制御レジスタFFh
XBUS_AUXA2hバス補助制御レジスタ00h

ポート制御レジスタ(PORT_CFG):

ビット名前アクセス概要リセット値
[7:4]bPn_DRVRWPn ポート出力ドライブ能力選択
0: ドライブ電流5mAレベルを選択。
1: P0/P2/P3はドライブ電流20mAレベル、P1はドライブ電流10mAレベルを選択。
0000b
[3:0]bPn_OCRWPnポートオープンドレイン出力許可
0: プッシュプル出力に設定。
1: オープンドレイン出力に設定。
1111b

Pnポート入出力レジスタ(Pn):

ビット名前アクセス概要リセット値
[7:0]Pn.0~Pn.7RWPn.xピンの入力およびデータ出力ステータスビットです。ビット単位でのアクセス可能FFh

Pnポート方向制御レジスタ(Pn_DIR):

ビット名前アクセス概要リセット値
[7:0]Pn_DIRRWPn.xピン方向設定00h

P0ポートプルアップ許可レジスタ(P0_PU)とPnポートプルアップ許可レジスタ(Pn_PU), n = 1/2/3:

ビット名前アクセス概要リセット値
[7:0]P0_PURWP0.xピンプルアップ抵抗が有効になります(En_P0_Pullup = 0が構成されている場合)00h
P0.xピンプルアップ抵抗が有効になります(En_P0_Pullup = 1が構成されている場合)FFh
[7:0]Pn_PURWPn.xピンのプルアップ抵抗が有効になります。
0: プルアップを無効
1: プルアップを有効
FFh

Pnポートの構成は、PORT_CFGのbPn_OC、ポート方向制御レジスタのPn_DIR、ポートプルアップ許可レジスタのPn_PUの組み合わせにより、以下のように実装されています。

表10.2.2 ポート構成レジスタの組み合わせ

bPn_OCPn_DIRPn_PU概要
000ハイインピーダンス入力モード、ピンにプルアップ抵抗なし
001プルアップ入力モード、ピンはプルアップ抵抗付き
01xプッシュプル出力モードでは、対称駆動が可能なため、大電流を出力したり吸収したりすることができます
100ハイインピーダンス入力弱擬似双方向モード、オープンドレイン出力、端子にプルアップ抵抗なし
110ハイインピーダンス入力擬似双方向モード、オープンドレイン出力、ピン上のプルアップ抵抗なし、出力がLOWからHIGHに変化すると、自動的に2クロックサイクルでHIGHを駆動し、変換を高速化します
101弱擬似双方向モード(8051の模倣)、オープンドレイン出力、サポート入力、プルアップ抵抗付きピン
111準双方向モード(標準8051)、オープンドレイン出力、サポート入力、ピンは、出力がLOWからHIGHに変化するときにプルアップ抵抗を持っている、それは自動的に変換を高速化するために2クロックサイクルのためにHIGHを駆動します

ポートP0~P3は、純粋な入力またはプッシュプル出力と準双方向モードをサポートしています。ポート P4 は純入力またはプッシュプル出力、その他のモードに対応しています。各端子には VDD33 に接続された自由に制御可能な内部プルアップ抵抗と GND に接続された保護ダイオードを内蔵しています。

図10.2.1は、P1ポートのP1.x端子の等価回路図です。P1_IEとAIN、ADC_CHANNを除去した後、P0、P2、P3ポートに適用することができます。

図10.2.1 I/Oピン等価回路図

GPIO_schematic

P1ポート入力許可レジスタ(P1_IE):

ビット名前アクセス概要リセット値
[7:0]P1_IERWP1.xピン入力許可。
0: ADCに使用され、デジタル入力は無効
1: デジタル入力が有効
FFh

10.3 P4ポート

P4ポート入力許可レジスタ(P4_OUT):

ビット名前アクセス概要リセット値
[7:0]P4_OUT.0~P4_OUT.7RWP4.xピンデータ出力ビットです。ビット単位アクセス可能00h

P4ポート入力レジスタ(P4_IN):

ビット名前アクセス概要リセット値
[7:0]P4_INR0P4.xピン入力ステータスビットFFh

P4ポートプルアップ許可レジスタ(P4_PU):

ビット名前アクセス概要リセット値
[7:0]P4_PURWP4.xプルアップ抵抗が有効になっています。
0: プルアップを無効
1: プルアップを有効
FFh

P4ポート方向制御レジスタ(P4_DIR):

ビット名前アクセス概要リセット値
[7:0]P4_DIRRWP4.xのピン方向の設定
0: 入力
1: 出力
00h

P4ポート制御レジスタ(P4_CFG)とP5ポート入力レジスタ(P5_IN):

ビット名前アクセス概要リセット値
7P5.7R0P5.7ピン入力ステータスビット0
6bIO_INT_ACTR0

GPIO割り込み要求の有効化状態です。

bIE_IO_EDGE = 0の時、本ビットは1でGPIO入力アクティブレベルを示し、割り込み要求が行われ、0で入力無効レベルを示します。

bIE_IO_EDGE = 1の場合、このビットはエッジ割り込みフラグとして使用されます。1の場合は有効なエッジが検出されたことを示します。
このビットはソフトウェアではクリアできません。リセットまたはレベル割り込みモードの時、または対応する割り込みサービス ルーチンゼロに入った時にのみ自動的にクリアされます。

0
5P5.5R0P5.5ピン入力ステータスビットと制御可能な内蔵プルダウン抵抗0
4P5.4R0P5.4ピン入力ステータスビットと制御可能な内蔵プルダウン抵抗0
3bSPI0_PIN_XRWSPI0ピンSCS/SCKマッピング許可です。
0: P1.4/P1.7が使用されます。
1: P4.6/P4.7が使用されます。
0
2bP4_DRVRWP4ポートの出力ドライブ能力選択。
0: ドライブ電流5mAレベル
1: ドライブ電流20mAレベル
0
1P5.1R0P5.1ピン入力ステータスビットと制御可能な内蔵プルダウン抵抗0
0P5.0R0P5.0ピン入力ステータスビットと制御可能な内蔵プルダウン抵抗0

10.4 GPIOマルチプレックスとマッピング

CH559 の I/O 端子の一部には代替機能があります。電源投入後は、すべて汎用 I/O ピンです。異なる機能モジュールが有効になった後、対応するピンはそれぞれの機能モジュールの対応する機能ピンとして構成されます。

ピン機能選択レジスタ(PIN_FUNC):

ビット名前アクセス概要リセット値
7bPWM1_PIN_XRWPWM1/PWM2ピンマッピング許可ビットです。
0: PWM1/2はP2.4/P2.5を使用
1: PWM1/2はP4.3/P4.5を使用
0
6bTMR3_PIN_XRWPWM3/CAP3ピンマッピング許可ビットです。
0: PWM3/CAP3はP1.2を使用
1: PWM3/CAP3はP4.2を使用
0
5bT2EX_PIN_XRWT2EX/CAP2ピンマッピング許可ビットです。
0: T2EX/CAP2はP1.1を使用
1: T2EX/CAP2はP2.5を使用
0
4bUART0_PIN_XRWUART0ピンマッピング許可ビットです。
0: RXD0/TXD0はP3.0/P3.1を使用
1: RXD0/TXD0はP0.2/P0.3を使用
0
3bXBUS_ENRWxBUS外部バス機能許可ビット。
0: 外部バスを無効
1: P0ポートを8ビットのデータバスとして、P3.6/P3.7をバスアクセス時の書き込み/読み出しストローブ制御として有効にします。
0
2bXBUS_CS_OERWxBUS外部バスチップセレクト出力許可ビットです。
0: チップセレクトの出力を無効にし、外部回路でデコードすることができます。
1: P3.4がCS0に設定され(XCS0チップセレクト0, アクティブロー), ALEが無効の時はバスアドレスA15が反転してP3.3(チップセレクト1, アクティブローに相当)に出力されます。
0
1bXBUS_AH_OERWxBUS外部バスハイ 8 ビットアドレス出力許可ビット。
0: 出力を無効にします。
1: MOVX_@DPTR命令が外部バスにアクセスしている間は、出力を無効にします。P2ポートの出力バスアドレスは上位8ビットです。
0
0bXBUS_AL_OERWxBUS 外部バスの下位 8 ビットのアドレス出力許可ビットです。
0: 多重化されたアドレスモードです。外部バスへのアクセス時には必要に応じて下位8ビットのアドレスがデータバスと多重化され、外部回路はALEでラッチ制御されます。
1: ダイレクトアドレスモードです。下位8ビットのアドレスA0~A7はP4.0~P4.5、P3.5~P2.7を介して出力されます。
0

表10.2.1 I/Oピン等価回路図

GPIOその他の機能 : 左から優先順位の高い順
P0[0] AD0, UDTR/bUDTR, P0.0
P0[1] AD1, URTS/bURTS, P0.1
P0[2] AD2, RXD_/bRXD_, P0.2
P0[3] AD3, TXD_/bTXD_, P0.3
P0[4] AD4, UCTS/bUCTS, P0.4
P0[5] AD5, UDSR/bUDSR, P0.5
P0[6] AD6, URI/bURI, P0.6
P0[7] AD7, UDCD/bUDCD, P0.7
P1[0] AIN0, T2/bT2, CAP1/bCAP1, P1.0
P1[1] AIN1, T2EX/bT2EX, CAP2/bCAP2, P1.1
P1[2] AIN2, PWM3/bPWM3, CAP3/bCAP3, P1.2
P1[3] AIN3, P1.3
P1[4] AIN4, SCS/bSCS, P1.4
P1[5] AIN5, MOSI/bMOSI, P1.5
P1[6] AIN6, MISO/bMISO, P1.6
P1[7] AIN7, SCK/bSCK, P1.7
P2[0] A8, P2.0
P2[1] MOSI1/bMOSI1, A9, P2.1
P2[2] MISO1/bMISO1, A10, P2.2
P2[3] SCK1/bSCK1, A11, P2.3
P2[4] PWM1/bPWM1, A12, P2.4
P2[5] TNOW/bTNOW, PWM2/bPWM2, A13, T2EX_/bT2EX_, CAP2_/bCAP2_, P2.5
P2[6] RXD1/bRXD1, A14, P2.6
P2[7] TXD1/bTXD1, DA7/bDA7, A15, P2.7
P3[0] RXD/bRXD, P3.0
P3[1] TXD/bTXD, P3.1
P3[2] LED0/bLED0, INT0/bINT0, P3.2
P3[3] LED1/bLED1, !A15, INT1/bINT1, P3.3
P3[4] LEDC/bLEDC, XCS0/bXCS0, T0/bT0, P3.4
P3[5] DA6/bDA6, T1/bT1, P3.5
P3[6] WR/bWR, P3.6
P3[7] RD/bRD, P3.7
P4[0] LED2/bLED2, A0, RXD1_/bRXD1_, P4.0
P4[1] A1, P4.1
P4[2] PWM3_/bPWM3_, CAP3_/bCAP3_, A2, P4.2
P4[3] PWM1_/bPWM1_, A3, P4.3
P4[4] LED3/bLED3, TNOW_/bTNOW_, TXD1_/bTXD1_, A4, P4.4
P4[5] PWM2_/bPWM2_, A5, P4.5
P4[6] XI, SCS_/bSCS_, P4.6
P4[7] XO, SCK_/bSCK_, P4.7
P5[0] DM/bDM, P5.0
P5[1] DP/bDP, P5.1
P5[4] HM/bHM, ALE, XB, P5.4
P5[5] HP/bHP, !A15, XA, P5.5
P5[7] RST/bRST, P5.7

上表の左から順に記載されている優先順位は、複数の機能モジュールが競合して GPIO を使用する場合の優先順位を示しています。例えば、P2ポートは出力バスアドレスの上位8ビットに設定されています。 実際にA8~A11アドレスのみを使用している場合は、A12~A15アドレスを使用していないときにP2.4~P2.7ピンを無駄にしないように、P2.4/P2.5はより優先度の高いPWM1/PWM2機能に、P2.6はRXD1機能に、P2.7はより優先度の高いTXD1やDA7機能に使用することができます。