GPIOの落とし穴
投稿:2013-05-05
ブレッドボードに6個のフルカラーLEDを差して点灯するよう組んでみると6個目(右端)が点灯しません。
写真は他のピンから引き回したもので、当初はLPCXpressoのヘッダピンから真っ直ぐ引いてました。

LPCXpressoのピンJ6-25、26、27は回路図を見るとそれぞれGPIOのP0[27]、P0[28]、P2[13]です。
この図はEmbedded Artistsが公開しているPDFのページ7の一部です。
回路図のPDF:LPCXpressoLPC1769revB.pdf
データシートにあるGPIOの回路図(出力部分のみ)は次の通り。
NXP、LPC17xxシリーズ、Product data sheet、ページ70、14.4 Standard I/O pin configuration、図35の中から。
なお下へ伸びた線は入力用の回路へ接続されています。
出力がHの場合は赤のルートになるため、特に気になりません。
LPC17xxのデータシート:LPC1769_68_67_66_65_64_63.pdf
回路図のPDF:LPCXpressoLPC1769revB.pdf

LPC17xxのデータシート:LPC1769_68_67_66_65_64_63.pdf

テストはG(緑)で行っていましたからJ6-25つまり、P0[27]から電圧が出ていない(又は順方向電圧より相当低い)という事になります。
そこでP0[27]の仕様について詳しく見ました。
なんてこったいorz
…「オープンドレイン」の記述がおわかりいただけたであろうか?
ユーザマニュアル:UM10360.pdf
オープンドレインの場合は下図の通り端子がGND側のFETがON/OFFするだけなので電圧が出て来ない訳です。
P0[28]も同様の記述がありました。他のGPIOを全部見たところ、「常にオープンドレイン」はこの2ピンだけです。
ユーザマニュアル:UM10360.pdf


元々GPIOにはオープンドレインにできるレジスタがあります。
でもユーザマニュアル、ページ116、8.5.16 Open Drain Pin Mode select register 0、表94によるとP0[27]とP0[28]の設定ビットが予約されてます。

LPC1769そのもの。やっぱりLPCXpressoは鉄ゲタだ(涙目)。