60歳からの電子工作ノート

生涯学習として取り組んでいます。

新ペルチェ制御用ボードの試作(ハードウェア)

  ペルチェ制御ボードに4インチLCDパネルを付けました。温度や設定値を表示します。入力は抵抗膜式タッチパネルを使用します。CPUポート出力によりタッチパネルに電圧を印加し、CPU内蔵のA/Dコンバータでタッチ位置を測定します。資料1*1

 

システム構成図

図1. 構成図


メインボード

図2. I/O割り付け表

図3. メインボード 回路図-1

図4. メインボード 回路図-2 (注:Boot modeは使用できません。)

図5. 基板のパターンとフットプリント

図6. メインボード

図7. メインボード(実装後)

図8. 部品表(メインボード)



サブボード

図9. サブボード 回路図

図10. 基板のパターンとフットプリント

図11. サブボード 実装前と実装後

図12. 部品表(サブボード)

LCDインターフェイスボード(Vcc=5[V]対応版)

図13. LCDインターフェイスボード(5[V]対応版) 回路図

図14. 基板のパターンとフットプリント

図15. LCDインターフェイスボード(5[V]対応版) 実装前と実装後

図16. 部品表 LCDインターフェイスボード(5[V]対応版)

LCDインターフェイスボード(Vcc=3.3[V]版)

図17. LCDインターフェイスボード(3.3[V]版) 回路図

図18. 基板のパターンとフットプリント

図19. LCDインターフェイスボード(3.3[V]版) 実装前と実装後

図20. 部品表 LCDインターフェイスボード(3.3[V]版)

補足事項(2023年6月16日)

本CPUボードでは、MD=Low時のブートモード(SCIインターフェイス)を使用できません。これは RXD1=P15, TXD1=P16に割り付けているためです。使用するためには、RXD1=P30,TXD1=P26としなければなりませんでした。

図21. ブートモード(SCIインターフェイス)時のRXD1,TXD1の割り付けポート

(ブートモードを使用すると、エミュレータを使用せずに、ルネサスフラッシュプログラマによりプログラムを書き込めます。)

*1:資料1 「抵抗膜型タッチパネルの動作原理」cc.cqpub.co.jp/system/contents/3246/

I2C通信とSPI通信(LCDインターフェイスボード5[V]版とSPIの延長実験)

電源電圧を5[V]とした際に使用するLCDインターフェイスボードを作成しました。またSPIのケーブル延長実験を行いました。

LCDインターフェイスボード(5V版)

図1. LCDインターフェイスボード(5[V]版)回路図

図2. LCDインターフェイスボード(5[V]版)レイアウトとフットプリント

図3. LCDインターフェイスボード(5[V]版)

図4. LCDインターフェイスボード(5[V]版) 部品実装後

図5. LCDインターフェイスボード(5[V]版) 部品表

FPCコネクタのはんだ付け(再検討)

FPCコネクタのはんだ付けについては、資料1*1でも検討しました。

表面実装の部品では基板表面処理はOSP(プリフラックス)または
ENIG(無電解ニッケルめっき及び置換金めっき)が一般的のため、今回の基板ではOSPを選択するつもりでした。しかし基板サイズが小さいため選択できませんでした。またENIGはコスト的に無理でした。結局「有鉛はんだレベラー」となりました。

レベラーが均一でないと凹凸ができてブリッジしやすくなるので、はんだ付けする前に、はんだ吸い取り線ではんだレベラーを溶かしました。

図6. 半田レベラーを均一にするための処理

今回のFPCコネクタのはんだ付けには、先端が細い半田ごて CS-31 20W(goot)と0.3mmΦ の細い共晶はんだ HOZAN H-712を使用しました。

SPIの延長実験

LANケーブルを1m,3m,5mと延長した場合、動作するのか。資料2*2の実験例です。SPI通信はRSPI通信(CLK 16[MHz])と簡易SPI通信(CLK 2[MHz])です。今回作成したLCDインターフェイスボード5[V]版 と資料3*3の3.3[V]版を使用しました。

図7. SPI延長実験の結果

(室温が表示され、℃/Fキーを交互に合計10回押して℃/F表示が変更されたならば、「正常」としています。)

LANケーブル長を変化させた場合のRSPI通信の波形です。

図8. ケーブル長による波形の変化(3.3[V]版)

図9. ケーブル長による波形の変化(5[V]版)

図10. 延長実験とLANケーブル


基板の修正記録

今回の基板はミスもあり、改良もあり6回も作成しました。

・FPCコネクタの空端子をベタGNDにすると、はんだ付け時にブリッジしてしまうため空端子はGNDに接続しないように修正。

LCDバックライトのLEDに電流制限抵抗を入れないと、LCDが熱くなりすぎるため抵抗をつけるように修正。

・FPCコネクタの上接点(スライドロック)は、LCDの着脱が難しいのでフリップロック式の下接点に変更。

・LANケーブルを1本できたので、RJ-45コネクタを1つに変更。

・RSPIのCLKのためかLCD表示がちらつく。このため5Vと3.3VのGNDを分け1点アースにする。

・1点アースの部分と電源ライン 3.3[V]が重なっていたので修正。

図11. 短絡していた基板

 

*1:資料1「I2C通信とSPI通信(4インチ LCDパネルとインターフェイスボード)」https://vabc.hatenadiary.jp/entry/2022/10/10/174722

*2:資料2「SPIによって、3mのケーブルを介した通信を実現することは可能ですか」www.analog.com/jp/education/landing-pages/003/bbs/bbs_18.html

*3:資料3「I2C通信とSPI通信(I2C通信とSPI通信(温湿度表示器の試作)」 https://vabc.hatenadiary.jp/entry/2022/11/22/111325

I2C通信とSPI通信(温湿度表示器の試作)

温湿度センサ(AHT25) からのデータをLCDへ表示しました。温度はタッチキーにより℃(摂氏)またはF(華氏)で表示します。

図1. 温湿度表示器

 

ハードウェア

CPUボードと接続するインターフェイスボード資料1*1 と、LCDと接続するインターフェイスボード資料2*2 を修正しました。

当初、ILI9488とXPT2046を制御するためには、ILI9488用にCS,CLK,MOSI,D/C,RST信号、XPT2046用にCLK,MOSI,MISO,IRQ(ペン検知)が必要だと思っていました。
VccとGNDを含めると、合計11本になります。このため接続用のLANケーブル(8線)を2本使用していました。

実験してみると、ILI9488では「DBI Type-C Option1(3 line)(9bit 転送)」を使用すれば、D/Cラインが不要である事がわかりました。またCSも常にLowで大丈夫です。
XPT2046用は、常にタッキー状態を読み出していればIRQ(ペン検知)は必要ありません。
ILI9488用にCLK,MOSI,RST、XPT2046用にCLK,MOSI,MISO、これにVccとGNDで8本となり、LANケーブルを1本にすることができました。

簡易I2C通信は無くしました。

図2. 構成図


インターフェイスボード

図3. インターフェイスボード  回路図

図4. レイアウトとフットプリント

図5. インターフェイスボード

図6 インターフェイスボード(部品実装後)

図7. インターフェイスボード(部品表)

LCDインターフェイスボード(3.3V版)

図8. LCDインターフェイスボード(3.3V) 回路図

図9. LCDインターフェイスボード(3.3V) レイアウトとフットプリント

図10. LCDインターフェイスボード(3.3V)

図11. LCDインターフェイスボード(3.3V) 部品実装後

図12. LCDインターフェイスボード(3.3V)   部品表

ソフトウェア

メイン処理

温湿度の取得と表示はメインルーチンで次のタイミングで行います。AHT25 へ「測定開始コマンド」の発行(I2C マスタ送信)は2秒毎に行います。「測定開始コマンド」発行から100msec後に、「温湿度読み出しコマンド」を発行します。(I2C通信  マスタ受信) 「温湿度読み出しコマンド」発行から100msec後に温湿度を計算します。100msec毎に温度と湿度を表示します。℃のキー入力があった場合、温度を℃(摂氏)で表示します。Fのキー入力があった場合、温度をF(華氏)で表示します。 

図13. 温湿度データの取得と表示タイミング

補足:

AHT25とのRIIC通信は、資料3*3

ILI9488とのRSPI通信は、資料2、XPT2046との簡易SPI通信は、資料4*4と同じです。

タッチキーの作成

フォント作成ツール(改良版)を使用して、64(W)x64(H)サイズのボタンイメージを作成し、指定した座標に表示しました。4隅を先端が細いプラスチック製のペンで押して、データを取得します。

図14. タッチキーとタッチ時の読み出しデータ

X軸の測定値が0x32~0x48であり、Y軸測定値が0x1b~0x29であれば、「℃のキー」が押されたと判断できます。またX軸の測定値が0x32~0x48であり、Y軸測定値が0x06~0x15であれば、「Fのキー」が押されたと判断できます。タッチの判定法にもよりますが、上記の2つの条件だけで判断した場合、下にあるキー(この場合「Fのキー」)を押して、離す時に上のキーが押されたと判断される場合がありました。これは、押してから離す途中で、Y軸の測定値が「上のキー」の判定領域の値となったためでした。

図15. 下のキーを押した状態から完全に離すまでのY軸の測定値

これを回避するために、キーの押し加減(圧力)を取得し、圧力が小さい場合は「タッチなし」と判断するようにしました。

ここでのタッチ圧は、フィルム側とLCDガラス側の透明導電膜間の抵抗値、タッチ抵抗(Rz)の逆数です。Rzが非常に大きい場合、タッチされていない状態です。Rzが0に近い場合、強くタッチされている状態です。

タッチ抵抗Rzの求め方は、資料5*5と、資料6*6に記載されています。

図16. タッチ抵抗(Rz)

タッチ状態で、電圧をY+,X-間に印加した場合、タッチ抵抗値(Rz)は、

  Rz = \dfrac{V_B-V_A}{I_Touch}   ----- ①

  V_A = V_cc\times \dfrac{Z_1}{Q} ----- ②

  V_B =  V_cc\times \dfrac{Z_2}{Q} ----- ③

(Z1,Z2は測定されたZ1,Z2の位置。QはA/Dコンバータの分解能 12bitの場合は4096)

またタッチ状態で、電圧をX+,X-間に印加した場合、A点とX-間の抵抗値 (RxA) は、

 RxA = Rx\times \dfrac{X}{Q} ----- ④

(Rxは、フイルムのX+,X-の抵抗値(既知)、Xは測定されたXの位置)

 V_A = RxA\times I_Touch ----- ⑤

②式=⑤式より、

 I_Touch = \dfrac{V_cc\times \dfrac{Z_1}{Q}}{RxA} ----- ⑥

⑥式、②式、③式を①式へ代入して、

 Rz =  \dfrac{V_B-V_A}{I_Touch} = \dfrac{ \left(Z_2- Z_1\right)\times\dfrac{V_cc}{Q}}{V_cc\times\dfrac{Z_1}{Q}}\times RxA

④式を代入して変形すると、

Rz = Rx \times\dfrac{X}{Q}\times\left(\dfrac{Z_2}{Z_1} - 1\right)

 

Rx はタッチパネルの端子のXPとXN間の抵抗値としました。実測で270[Ω]でした。

XとZ1,Z2は、コマンドで取得します。

図17. タッチ位置(x,y)とタッチ圧測定用のコマンド

図18. タッチパネルの端子


タイマ割り込み処理

タッチキーのON/OFF(タッチ、非タッチ)を判定する処理は、タイマ割り込み内で行います。タッチコントローラへのコマンド発行を10msec毎に行います。コマンド発行から10msec後に受信済みのX,Y,Z1,Z2データより、X,Yの位置、タッチ抵抗を求め、キーのON/OFF判定を行います。

図19. タッチコントローラへのコマンド発行とON/OFF判定タイミング

 タッチの判定は、タッチ→非タッチで行います。4回連続してタッチ状態で、今回は非タッチ状態ならば、そのキーが押されたと判断して、メインルーチンのキー入力処理に知らせるフラグをセットしています。

図20. キーのON判定タイミング

図21. キーのON/OFF判定フロー 1

図22. キーのON/OFF判定フロー 2



ファイル一覧

図23. ファイル一覧

(ルネサス提供ファイルとは、CS+の新規プロジェクトで作成されるファイルです。)

使用する割り込み処理:

図24. 割り込み一覧

割り込み処理は、各モジュール内で定義しているため、ルネサス提供ファイルの intprg.cとvect.hで記載されている、同名の割り込みルーチンをコメント化します。

図25. 割り込み処理のコメント化

GitHub登録場所: https://github.com/vABCWork/test_thmo_humi

キー表示のピクセル欠け

「℃のキー」と「Fのキー」とも最初の8pixelが表示できませんでした。原因はわかりません。

図26.  キー表示の不良

フォントデータ作成ツール(改良版)

フォントデータ作成ツール 資料7*7を改良しました。

ピクセルサイズの選択を増やしました。

・Pack Bit形式(マイコンで使用する書式)で読出し可能としました。

・画像データ(白黒BMP形式)のファイルを読出しできるようにしました。

・文字をInputする際に、表示ピクセルのoffset X,Yを指定できるようにしました。

図27. フォントデータ作成ツール(改良版)

GitHub登録場所: https://github.com/vABCWork/MakeBitMap2

画像データからの作成例

7セグメントLEDの画像データから、48x96ピクセルのフォントデータを作成する例です。

1) 資料8*8の7セグの部分をsnipping ツールで画像切り取り、ファイルに保存します。

2)Windows11のペイント(11.2208.6.0)で、読み出します。

図28. ペイントでの画像データ読み出し

3)「ファイル」→「画像のプロパティ」で、色を「白黒」に変更します。

図29. 白黒に変更

4)「イメージ」→「サイズ変更」により、ピクセル単位の 48Wx96Hに変更します。

図30. サイズの変更

5)「ツール」でビット単位に修正します。

6)「ファイル」→「名前を付けて保存」→「その他の形式」 で、モノクロビットマップで保存します。

図31. モノクロBMP形式で保存

7)MakeFontData を起動し、ピクセルサイズを 48(W)x96(H)とします。

「Load Image]ボタンで、読み出します。

図32. モノクロBMP形式の読み出し

*1:資料1「I2C通信とSPI通信(ボードの作成)」 https://vabc.hatenadiary.jp/entry/2022/08/11/154539

*2:資料2「I2C通信とSPI通信(4インチ LCDパネルとインターフェイスボード)」 https://vabc.hatenadiary.jp/entry/2022/10/10/174722

*3:資料3「I2C通信とSPI通信(RIICと簡易I2Cの割り込み処理プログラム)」https://vabc.hatenadiary.jp/entry/2022/08/30/154918

*4:資料4「I2C通信とSPI通信(タッチコントローラと簡易SPI通信)」https://vabc.hatenadiary.jp/entry/2022/10/22/172343

*5:資料5「低電圧I/O タッチスクリーン・コントローラ」www.ti.com/product/ja-jp/TSC2046

*6:資料6「タッチ・スクリーン・システムのアナログ入力雑音を低減する方法」www.ti.com/product/ja-jp/TSC2046

*7:資料7「I2C通信とSPI通信(フォントデータ作成ツールと数字の表示)」https://vabc.hatenadiary.jp/entry/2022/10/16/104933

*8:資料8「1桁LED数字表示器」akizukidenshi.com/download/ds/rohm/la401dn.pdf

I2C通信とSPI通信(タッチコントローラと簡易SPI通信)

タッチコントローラ(XPT2046)と簡易SPI通信を行いました。タッチ位置でのデータ変化を確認しました。

以下の資料を参考にしています。資料1*1、資料2*2、資料3*3、資料4*4

 

 

タッチシステム

 

図1. タッチシステム

図2. 電圧を印加する端子と読み出し端子

 使用しているタッチパネルは4線の抵抗式(感圧式) です。このタッチパネルはLCDガラス上に透明の導電性抵抗膜がコーティングされていて、隙間を空けてフィルムがついています。フィルムの下側にもコーティングされています。また透明導電膜から4本の線が引き出されています。フィルムをタッチすると、フィルム裏面の透明導電膜とLCD側の透明導電膜が導通して電流が流れます。

X位置を検出する際には、X+(XP)とX-(XN)に電圧を印加し、X位置に対応した電圧をY+(YP)から測定します。Y位置を検出する際には、Y+(YP)とY-(YN)に電圧を印加し、Y位置に対応した電圧をX+(XP)から測定します。

 簡易SPI通信

マイコンとの接続

 シリアルコミュニケーションインターフェイス(SCI)のSCI5 を簡易SPIとして使用します。タッチコントローラはコマンドを受信すると、A/D変換を開始し、結果を12ビットのA/D変換データとして送信します。

マイコンはX軸測定コマンドを送信後、受信用のクロックを生成するため、ダミーデータを2バイト送信します。ダミーデータを2バイト送信することで、A/D変換結果を受信できます。Y軸の測定もY軸測定コマンドを送信後、ダミーデータを2バイト送信してA/D変換結果を受信します。

図3. 簡易SPI通信とタイミング (資料3の図9)

通信仕様

簡易SPIの初期設定や送受信動作は、SCIの「クロック同期式モード」と同じです。データ長は8ビットのMSBファーストとなります。SPIモードレジスタ(SPMR)のCKPH=1(クロック遅れあり), CKPOL=0(クロック極性反転なし)とします。

図4. 簡易SPI通信のクロックと送受信タイミング(資料1の図28.58)

フロー

図5. 簡易SPI通信フロー

実験

X軸とY軸の測定コマンド(制御バイト)を送信して、A/D変換データを受信します。

図6. タッチコントローラの制御バイト(資料3の図3と図4より作成)

タッチ無しの状態と、パネルの各点(A,B,C,D)をタッチした時のA/D変換データです。

図7. タッチしない状態と各点(A,B,C,D)をタッチした時のA/D変換データ

図8. タッチしない状態の送受信データ

図9. A点タッチ、B点タッチ時の送受信データ

図10. C点タッチ、D点タッチ時の送受信データ

ファイル一覧

図11. ファイル一覧

(ルネサス提供ファイルとは、CS+の新規プロジェクトで作成されるファイルです。)

使用する割り込み処理:

図12. 割り込み処理

ルネサス提供ファイルの修正(割り込み処理のコメント化)

本プログラムで使用する割り込み処理は、sci_spi.cで記述するようにしました。

ルネサス提供ファイルの intprg.cとvect.hで記載されている、同名の割り込みルーチンをコメント化します。

図13. 割り込み処理のコメント化

GitHub登録場所: https://github.com/vABCWork/test_touch

 

初めての部品不良

 今年の6月頃にAliExpress からXPT2046 を購入しました。10個で約300円でした。

テスト基板のはんだ付け後、基板のVccとGND間を確認したところショートしていました。FPCコネクタ(40ピン,0.5mmピッチ)が原因だと思い、確認しましたがブリッジはありません。チップコンデンサとチップ抵抗を取り外しましたが、まだショートしています。XPT2046を取り外すと、ショートしなくなりました。「手はんだ」が原因とも考えられるので、購入した他のXPT2046を調べました。全てではありませんが、VCCとGND他がショートしている部品が1個ありました。

XPT2046(1個30円、1個200円、3.5インチLCD上)を比較した写真です。

図14. XPT2046の不良品と良品

 

*1:資料1「RX23E-Aグループ ユーザーズマニュアル ハードウェア編 ( R01UH0801JJ0120 Rev.1.20)」

*2:資料2「TIの4線式TSCを使用して8線抵抗膜方式のタッチ・スクリーンを制御する方法」 www.ti.com/product/ja-jp/TSC2046

*3:資料3「低電圧I/O タッチスクリーン・コントローラ」www.ti.com/product/ja-jp/TSC2046 

*4:資料4 「抵抗膜型タッチパネルの動作原理」cc.cqpub.co.jp/system/contents/3246/

I2C通信とSPI通信(フォントデータ作成ツールと数字の表示)

マイコンで使用するフォントデータ作成用のアプリを作成しました。またLCDへ数字を1文字表示しました。

 

フォントデータ作成ツール

概要と使い方

WindowsのTrueTypeのフォントデータから、マイコンで使用するビットマップデータをつくるアプリです。

図1. 画面

フォント(TestFont0123-Regular.ttf)をパソコンにインストールします。

アプリ起動後、ピクセルサイズを指定します。(8x16または48x96)

作成画面が表示されます。(48x96選択時には、画面表示まで時間がかかります。)

Inputの欄に、文字を入力します。(1文字、使用しているフォントにある数字)

「Set」ボタンで、文字がビットデータに変換されます。

ピクセル毎のON/OFF編集がマウスのクリックで行えます。

編集後のデータは、「Save Bit」ボタンで保存します。また読み込みは「Load Bit」ボタンで行います。マイコンで使用するデータは、「Save Pack Bit」ボタンで保存します。

注:「Set」ボタンの直後に限り、「Up]、「Down」、「Left」、「Right」ボタンで画像を移動できます。一度、ピクセルのON/OFF編集すると、「Up]、「Down」、「Left」、「Right」ボタンは無効となります。

フォント

TrueTypeフォントは、BitFontMaker2で作成しました。

図2. BitFontMaker2によるフォント作成(数字の0~9)

フォント名は、ファイル(MainWindow.xaml.cs)の変数 ft_font_name で設定しています。 

(他のフォントに変更も可能ですがフォントのライセンスに注意が必要です。)

フロー

図3. 作成ツールのフロー

マイコン側の処理

フォントデータの展開

フォントデータ(パソコンで作成したPack Bit情報)を、ILI9488へ送信するためには、2ピクセル毎のOn/Off情報から色の情報を含めたデータを作成します。

文字色=緑、背景色=黒 とした場合の送信データの例です。

col=0,row=0から、col方向に2ビットの情報を得て、

2つのピクセルがOFF,OFFの場合、「黒」「黒」
OFF,ONの場合、「黒」「緑」
ON,OFFの場合、「緑」「黒」
ON,ONの場合、「緑」「緑」となるデータを作成します。

row(page) 0~15の範囲でくりかえします。

図4. フォントデータと送信データ(RGB111)

フローと表示例

  インターフェイスDBI Type-C  Option3(8 bit転送 )を使用しています。

図5. 1文字の表示フローと表示例

ファイル一覧

パソコン側

下記のファイルがGitHubにあります。

MainWindow.xaml,
MainWindow.xaml.cs
SetPixelSize.xaml
SetPixelSize.xaml.cs
TestFont0123-Regular.ttf

プロジェクトを作成するためには、Visusal Studio 2022を起動後、「新しいプロジェクトの作成」で、「C# WPFアプリ(.NET Framework) (Windows Presentation Foundation クライアント アプリケーション)(C#, XAML, Windows, デスクトップ) 」を指定します。プロジェクト名に「MakeBitMap」を入力します。空のMainWIndow.xamlとMainWIndow.xaml.csが作成されます。

SetPixelSize.xaml は別 Windowになっています。追加する方法は、(https://vabc.hatenadiary.jp/entry/2021/11/21/085446)と同様です。ウィンドウ(WPF)名を、「SetPixelSize」として「空」のファイルを作成します。

開発環境: Windows 11 Pro , 22H2      .NET Framework 4.8 

Microsoft Visual Studio Community 2022 (64 ビット) – Current Version 17.3.5

GitHub登録場所: https://github.com/vABCWork/MakeBitMap

マイコン

図6. マイコン側ファイル一覧

(ルネサス提供ファイルとは、CS+の新規プロジェクトで作成されるファイルです。)

使用する割り込み処理:

図7. 使用する割り込み

ルネサス提供ファイルの修正(割り込み処理のコメント化)

本プログラムで使用する割り込み処理は、spi.cで記述するようにしました。

ルネサス提供ファイルの intprg.cとvect.hで記載されている、同名の割り込みルーチンをコメント化します。

図8. 割り込み処理のコメント化

GitHub登録場所: https://github.com/vABCWork/test_font

I2C通信とSPI通信(4インチ LCDパネルとインターフェイスボード)

 4インチのLCDパネルを入手し、インターフェイスボードを作成しました。DBI Type-C Option1(3 line)(9bit )で通信します。

以下の資料を参考にしています。資料1*1、資料2 *2

資料3*3、資料4*4

 

LCDパネルとインターフェイスボード

LCDパネル

4インチのタッチパネル付き LCDパネル(ILI9488)を、AliexpressのJR E-Shopから購入しました。送料込みで2000円ぐらいでした。

MSP3520のLCD(3.5インチ)より少しだけ大きく表示できます。

図1 4 インチ LCDパネル

インターフェイスボード

LCDパネルを接続するためのボードを作成しました。

図2. 回路図

図3. レイアウトとフットプリント

図4. 部品実装前

図5 部品実装後(タッチキーコントローラは未実装)

図6. 部品表

FPCコネクタによる接続

 FPCコネクタには上接点と下接点があります。LCDパネル側の接点とFPCコネクタ側の接点を接続します。本ボードでは下接点を使用しました。

図7. LCDパネル側の接点

図8. FPCコネクタが下接点の場合の接続例

図9. FPCコネクタが上接点の場合の接続例

FPCコネクタのはんだ付け

難しい原因

FPCコネクタ(0.5mmピッチ、40pin)のはんだ付けが困難でした。原因を考えると、

・鉛フリーはんだを使用したため付きにくい。また回復できないブリッジが発生した。

・基板発注時の基板表面処理に、HASL(Hot Air Solder Levelling)のLead Free(鉛フリーはんだレベラー)を選択していた。はんだレベラーはブリッジが発生しやすそうです。
表面実装部品の基板表面処理は、OSP(Organic solderability preservative)(プリフラックス)または
ENIG(Electroless nickel immersion gold)(無電解ニッケルめっき及び置換金めっき)が一般的のようです。(資料4)

・はんだレベラーが均一でない基板があり、それに実装すると基板とピンに隙間ができて、はんだが付きにくい。

図10. はんだレベラーが不良と思われる基板

図11. はんだレベラーが良好な基板

・FPCコネクタの未接続端子をベタGNDとしたため、はんだが付きにくく、すぐにブリッジしてしまう。

図12. ベタグランドに接続した端子のブリッジ
対応

・鉛フリーはんだは難しいので、共晶はんだを使用しました。

・レベラーが良好な基板を使用しました。

・未使用端子をベタグランドにつなげない基板を作成しました。

手順

・コネクタが真っ直ぐになっている事を確認します。真っ直ぐに付けないと、LCDパネル側と接触不良になる可能性があります。

・フラックスを十分に塗ります。

・最初に太い小手先(例えば 2.4D)でブリッジしてもよい未使用端子をはんだ付けして、
コネクタを固定します。(はんだを付けなくても、はんだレベラーのはんだで付く場合もあるようです。)

・両端の補強金具をはんだ付けします。

・細い小手先(例 1CR)で各ピンをはんだ付けします。

・ピンセットで付いている事を確認します。

・ブリッジが発生した際は、太い小手先を使用して回復します。(共晶はんだの場合、比較的容易です。)

図13. FPCコネクタのはんだ付け手順の例

図14. ブリッジの修正(太い小手先を使用)

インターフェイス

DBI Type-C Option1 と Option3

インターフェイスボードではジャンバーにより、DBI Type-C Option1(3 line)(9bit )とOption3( 4line)(8bit)が選択できます。Option1ではコマンドとパラメータ(またはGRAMへの画像データ)の判別をデータの先頭ビットで行い、D/CX制御線は不要です。1データ 9bitで転送します。Option3ではコマンドとパラメータ(またはGRAMへの画像データ)の判別をD/C制御線で行います。

Option1の場合、ILI9488の書込み時最小クロック周期は66[nsec]、最大クロック周波数は15.15[MHz]です。(資料2の17.4.2)

図15. Option1 ( 9bitで送信 )

図16. Option3 (8bitで送信)



フロー図

この実験ではOption1を使用します。フロー図、プログラムはOption1用です。

RSPIの初期設定

Option1のRSPI設定です。

図17 RSPI初期設定フロー(Option1 用)

データ送信フロー

DBI Type-C  Option1では、送信データ(9bit)の先頭ビットでコマンド/パラメータ(または画像データ)を判断するため、コマンド、パラメータの送信と画像データの送信は同じ処理にしています。「送信バッファエンプティ割り込み」と「アイドル割り込み」を使用します。
 

図18. データ送信フロー (Option 1用)

波形

Option1(9bit送信)での波形とカラーバー表示です。(注: オシロのプローブが不良でした。CLKの波形は正確ではありません。2022年11月26日)

図19. コマンドとパラメータの送信波形( Option1, 9bit送信)

図20. 画像データ送信波形とカラーバー (Option1, 9bit送信)


プログラム

図 21. ファイル一覧

(ルネサス提供ファイルとは、CS+の新規プロジェクトで作成されるファイルです。)

図22. 使用している割り込み

ルネサス提供ファイルの修正(割り込み処理のコメント化)

本プログラムで使用する割り込み処理は、spi_9bit.cで記述するようにしました。

ルネサス提供ファイルの intprg.cとvect.hで記載されている、同名の割り込みルーチンをコメント化します。

図23. 割り込み処理のコメント化

 

GitHub登録場所: https://github.com/vABCWork/test_colorbar_9bit

 



*1:資料1「RX23E-Aグループ ユーザーズマニュアル ハードウェア編 ( R01UH0801JJ0120 Rev.1.20)」

*2:資料2「ILI9488 ドライバデータシート」 "www.lcdwiki.com/res/MSP3520/ILI9488%20Data%20Sheet.pdf "

*3:資料3「4 inch 320x480 ILI9488 LCD パネル」 //ja.aliexpress.com/item/4000569492351.html

*4:資料4「目からウロコ! のQ&A便 第83号4」 P版.com  "www.p-ban.com/htmlmail_qanda/2020/01"

I2C通信とSPI通信(LCD表示器MSP3520とのSPI通信)

 SPI通信の実験にMSP3520を使いました。以下の資料を参考にしています。資料1*1、資料2 *2

資料3*3、資料4 *4、資料5*5、資料6*6 

 

液晶ディスプレイ

MSP3520

MSP3520とは3.5インチのタッチキー付き液晶ディスプレイボードです。ディスプレイドライバ(ILI9488)を使用したLCDモジュール(QD3503)、タッチキーコントローラ(XPT2046)、接続用端子(14pin)等で構成されています。解像度は320x480 ピクセルです。SPI通信でマイコンと接続します。

図1. MSP3520の概観



色のつくりかた

色は「光の3原色」でつくります。LCDモジュールのバックライトから出た光は、液晶とRGBカラーフィルタを通して「色」として認識されます。RGBフィルタへの各光量の調整により色をつくります。例えばR(赤)とG(緑)をONとしてB(青)をOFFとすると、R(赤)とG(緑)が重なり黄色に見えます。R(赤),G(緑),B(青)それぞれ6bitの情報を持てば(RGB666)、 2^6 \times 2^6 \times 2^6 = 64 \times 64 \times 64 =262,144 色 (262K colors) 表示できます。

図2. 色の表示法

インターフェイス

 ドライバIC ILI9488とのSPI通信によるインターフェイスは、MIPI-DBI Type C と呼ばれています。Option1とOption3 があります。Option1とOption3の切替は、QD3503のIM0~IM1のHigh/Lowで行います。(資料2の3.2.1 System Interface)

図3. ILI9488のインターフェイス


資料3の「QD3503の仕様書」(TFT-LCM Interface Specification)と資料4の「回路図」のFPC接続部見ると、IM2=39pin,IM1=40pin,IM0=41pin となっており、全て3.3[V]と接続されています。実機も39pin~41pinは3.3[V]に接続されています。このため、このMSP3520では「DBI Type-C  Option 3」を使用することになります。

図4. QD3503のインターフェイス(IM0,IM1,IM2)

DBI Type-C  Option3では、D/CX制御線によりコマンドとパラメータ(またはGRAMへの画像データ)を判別しています。D/CX = Lowの場合はコマンド、D/CX = Highの場合はコマンドのパラメータ、またはGRAMへの画像データとなります。(資料2の4.2.1 Write Cycle Sequence)

図5. DBI Type-C Option3 のインターフェイス

表示に必要な制御線は、クロック、マスタ送信データ、スレーブセレクト、D/C、Resetの5本となります。

図6. マイコンとのインターフェイス

SPI通信

仕様

通信するために、ILI9488のSPI通信仕様に合わせる必要があります。ILI9488の書き込み時、最小クロック周期は50[nsec]、最大クロックj周波数は20[MHz]です。(資料2の17.4.3)

図7. ILI9488 DBI Type-C Option3 のタイミングチャート

マイコン側のRSPCKの最大周波数は16[MHz]なので、クロックは16[MHz]となります。

 SPI通信にはクロックの極性(Clock Polarity:CPOL)とクロックの位相(Clock Phase:CPHA)により4つのモードがあります。

図8. SPI通信のモード

図7より、ILI9488ではアイドル時はクロック=High、クロックの立ち上がり時にデータを取り込むので、SPIモード3(CPOL=1,CPHA=1)を使用します。

RSPI初期化フロー

RSPIの初期化と転送フォーマットの設定処理です。

図9. RSPI初期設定フロー

出力波形の確認

RSPIの設定通りに波形が出力されているか、LCDを接続せずにCPUボードだけで確認します。

図10. RSPIタイミング (資料1 page 1380 図39.64より作成)

 

図11. 1バイトの送信とクロック

図12. RSPCK遅延とSSLネゲート遅延

図13. 連続送信遅延と測定の様子

マイコンとの接続

アダプターボード

LANケーブルで接続するためのアダプターボードを作成します。

図 14. アダプターボード

画像データ(RGB111)

DBI Type-C Option3では、RGB111とRGB666が使用できます。(資料2の4.7.2) 初期化時、Interface Pixel Format(0x3A)コマンドで指定します。

資料6のサンプルプログラムではRGB666(18 bits/pixel)を使用していました。

RGB666では1ピクセルの表示に3バイトのデータが必要です。これに対してRGB111(3 bits/pixel)では、1バイトで2ピクセル表示できます。6倍も差があるのでこの実験ではRGB111を使用しています。

図15. RGB111(3bits/pixel)とRGB666(18bits/pixel)

ILI9488へのデータ送信処理

送信処理はコマンドとパラメータを送信する場合と、画像データを送信する場合で異なります。

コマンドとパラメータ送信する場合は、割り込みを使用しません。これはコマンドとパラメータでD/C制御線をH/Lと切り替える必要があるため、「送信バッファエンプティ割り込み」での送信が難いためです。画像データを送信する場合は、「送信バッファエンプティ割り込み」を使用します。

図16  送信処理フロー

ILI9488への初期化コマンド

 資料6 を解凍してできるフォルダ Demoにサンプルがあります。ここではスマホと同じような向きで表示を行います。表示色は8色です。

図17. ILI9488の初期化処理フロー

 

カラーバー表示

波形

 8色のカラーバーを表示して波形をみました。LANケーブルは15cmですが、CPU端子から液晶モジュールまでは約30cm離れています。

(注: オシロのプローブが不良でした。CLKの波形は正確ではありません。2022年11月26日)

図18  RSPI波形

図19. クロック波形とカラーバー表示

フロー

図20. カラーバー表示のフロー

プログラム

図21. ファイル一覧

図22. 使用している割り込み

ルネサス提供ファイルの修正(割り込み処理のコメント化)
本プログラムで使用する割り込み処理は、spi.cで記述するようにしました。

ルネサス提供ファイルの intprg.cとvect.hで記載されている、同名の割り込みルーチンをコメント化します。

図23. 割り込み処理のコメント化

(ルネサス提供ファイルとは、CS+の新規プロジェクトで作成されるファイルです。)

GitHub登録場所: https://github.com/vABCWork/test_colorbar

 

*1:資料1「RX23E-Aグループ ユーザーズマニュアル ハードウェア編 ( R01UH0801JJ0120 Rev.1.20)」

*2:資料2「ILI9488 ドライバデータシート」 "www.lcdwiki.com/res/MSP3520/ILI9488%20Data%20Sheet.pdf "

*3:資料3「3.5 inch TFT Specifications」"//www.lcdwiki.com/res/MSP3520/QD3503_Specification_V1.1.pdf"

*4:資料4「3.5インチ SPIモジュール回路図」"www.lcdwiki.com/res/MSP3520/3.5%E5%AF%B8SPI%E6%A8%A1%E5%9D%97%E5%8E%9F%E7%90%86%E5%9B%BE.pdf "

*5:資料5「3.5inch SPI Module MSP3520 User Manual」"www.lcdwiki.com/res/MSP3520/3.5inch_SPI_Module_MSP3520_User_Manual_EN.pdf"

*6:資料6「3.5 inch SPI Module Package(ILI9488)」 "www.lcdwiki.com/3.5inch_SPI_Module_ILI9488_SKU:MSP3520#Program_Download"