這裡記錄了使用單晶片 EFM8BB3 的 UART1 ,所需要的基本設定。(未使用 CTS 及 RTS)
- 設定暫存器 XBR2 : Port I/O Crossbar 2 (SFR Page = 0x0, 0x20; SFR Address: 0xE3)
- 將 [Bit6] XBARE 設為 1 (Crossbar enabled.)
這裡記錄了使用單晶片 EFM8BB3 的 UART1 ,所需要的基本設定。(未使用 CTS 及 RTS)

WS2812B 這顆內建控制的多彩LED晶片,其邏輯控制的 VIH 最小電壓是 VDD x 0.7,使用於5V時也就是 3.5V,而 silicon lab 及其它廠家的單晶片或是FPGA,I/O腳位的輸出很多都是 3.3V的電壓準位,是無法達到WS2812B的輸入要求。
這時侯可以用兩個方法:
1. 降底電源電壓。當VDD降至 4.5V 時,4.5x0.7=3.15V,這樣單晶片的輸出 3.3V 就可被WS2812B接受,甚至可以把VDD電壓降的更底,但不可低於3.5V。
2. 將單晶片的輸出電壓 3.3V 轉換至 5V。
上述的第一個方法若於較小且獨位的電路時較可行,直接把電源電壓調降即可。但若和其它系統共用電源或不能隨意調整電源電壓時,則須獨立再產生(或轉換)一個電源電壓,較不方便且不划算。

繼上一篇 使用單晶片EFM8UB2控制WS2812-12 LED模組(C語言) 後,我覺得可以使用C語言完成那個控制,應該是因為EFM8UB2的系統頻率可以高達48MHz 才做到的,所以我想使用系統頻率較低的EFM8BB1(24.5MHz)搭配組合語言來做做看。
單晶片型號:EFM8BB10F8I-QSOP24
開發環境:Keil uVision V5.38.0.0
參考資料:單晶片組合語言
以下是程式碼

最近入手一個多彩LED模組 WS2812,使用Arduino要讓它"亮起來"很容易,但我想用Silicon lab的單晶片讓它工作,沒想到比我想像中的困難。
最後的成果是搭配示波器所完成,並且是工作在48MHz的情況下。
單晶片型號:EFM8UB2F64G @ 48MHz
多彩LED模組:WS2812-12
開發環境:Keil uVision V5.38.0.0

在OPA輸出串了一個RC電路來穩定直流電壓輸出,接著輸入ADG506切換最後輸出的通道。
當前一個通道的電壓與下一個通道的電壓有著比較大的差異時,會出現類似充放電的延遲現象。以示波器觀察如下:(黃色為1V/DIV,紫色為同信號放大10倍,下同)
(時間軸由 20mS/DIV 放大為 5mS/DIV 以利觀察)
在我的應用上會出現如下圖的問題:(連續取值並繪製反應曲線)
(當前一個通道的電壓與此通道的電壓由高很多變成差不多時,上述的問題即不在此通道上顯現,所以讀取了較低的電壓值。而這個曲線是吸光值,與電壓值是反相關係,所以看到吸光值向上跳了一階)

言明在先,BCB是我偶爾使用的工具,並不精通,下文若有錯誤還請不吝指教,謝謝!
我使用了 Series->Clear() 欲清除已經存在的曲線,在編譯的階段並沒有問題,但是在程式運行到這個函式時,出現了如下的錯誤:
由於功力潛薄,我不知道這是怎麼了,如有大俠願意指點一二,實感榮幸。
在無計可施下,我改用了 Free() 這個函式,程式碼如下
Chart2->Series[0]->Free();

AS5600是一顆使用N/S磁場來辨識角度的磁編碼器,模組的價格僅幾十塊台幣,在精度及速度要求不高的場合還滿好用的。
得知有這樣的產品,立馬購入測試。
一開始先選擇最簡單的類比輸出方式(只須接VCC、OUT、GND)來做測試,但其OUT腳位的電壓值卻沒有隨著上方磁鐵的旋轉而發生任何變化。不得不只好找它的Datasheet來讀,才發現其"PGO"腳被電路板的一顆電阻給拉到低電位了,這樣AS5600會進入Programming Option B的模式(使用OUT腳來編輯角度範圍),才導致其無法正常輸出。
這時可以選擇使用接線將PGO腳位連接到高電位,或是將電路板上的這顆電阻拆下即可。
底下是一些使用的記錄:

這可能"不能"算是一個問題,但對於我這個不懂的人來說,也確實花了一些時間才恍然大悟,所以記了下來,或許有人跟我一樣用的到。
我使用 MIT APP Inventor 開發了一個藍芽通訊的 APP,但是在這個 APP 裡卻找不到我想連接的藍芽裝置。(正確的說是找不到任何藍芽裝置)
如上圖,確認已在手機裡正確配對藍芽裝置,但在APP的清單裡卻看不到任何東西。
一開始我先是懷疑HC-05是不是壞了?但怎麼想都不對,因為它可以在手機的藍芽功能裡找到並配對,而且為什麼其它的藍芽裝置也都沒有顯示在列表上?
接著開始認為是不是我的手機跟 MIT APP Inventor 開發的藍芽APP不相容,心裡預計著明天再試試家裡的舊手機。

Silicon labs 的 EFM8UB系統單晶片,預載的 Bootloader 是使用 USB 接口,但是我現在的專案是使用其UART介面與上層通訊,而日後又要直接從上層對其進行韌體更新,所以需要將其內部預載的 Bootloader 改為由 UART 接口進行的方式。
我使用的型號是 EFM8UB2,從 AN945 這份文件中可以看到其 UART Bootloader 是 "Example"。一開始我根本不知道這個 "Example" 到底是指什麼,上綱找了好久就是找不到解答,後來靈光一閃使用了 Silicon labs 自家的 Simplicity Studio ,才發現原來答案就在我身邊。(我一直都是使用 Keil)
底下為產生 UART Bootloader Hex 檔的步驟:
1. 先產生一個新的專案
2. 在 Boards 裡輸入晶片型號進行搜尋

BCB版本:2007
在 Memo 或 RichEdit 中增加文字,當文字行數超過顯示範圍時,畫面不會自動向下捲以顯示最新訊息。
不會自動向下捲 ↓ ↓ ↓
將元件屬性欄位中的 HideSelection 設定為 false ,即可自動向下捲。

(此文是家中的液晶電視故障維修記錄,作者並非液晶電視維修專家,內容僅供參考。)
故障現象:有聲音,沒有影像。
一開始懷疑是不是背光驅動的電路出了問題,但用三用電表測量供給背光的連接端子有直流八十幾伏的電壓輸出,所以排除了驅動電路故障的可能性。
首先小心的將背光與液晶面板分離
上半為面板,下半部為背光。

使用齒輪泵用於定量充填,心得如下: