發表文章

目前顯示的是 2020的文章

STM8S core development board

圖片
STM8 core development board  最近新購的開發板, 因為它的體積小,功能足夠使用來做簡易的溫度偵測器,所以就花了點時間學習和分享. 首先, 要到 STM8S 的網站下載標準程式庫. STM8S/A Standard peripheral library 開發的工具很多選擇, 若選擇 IAR 的人可以參考以下作法. 由 IAR 的網站, 下載 IAR for STM8.  iar-embedded-workbench 建立一個新的工作空間 : File -> New Workspace 建立一個新的專案 :  選擇 "Create New Project" Select "Empty project" and "OK" 建議在專案目錄下, 建立一個 "PRJ 的目錄"來存放 IAR 專案的設定檔案. 再為專案"命名",再選"存檔" 建立相關的工作目錄 : PRJ - 存放和專案相關的設定檔案 LIB - 存放 Std Library 的程式碼檔案和表頭檔案 ( stsw-stm8069 標準程式庫 STM8S_StdPeriph_Driver 的目錄內容) SOURCE - 專案的程式碼檔案 (以 GPIO 實驗為例,  stsw-stm8069 標準程式庫  GPIO_Toggle 的目錄內容 ) 載入專案程式碼 建立程式碼群組 : 在專案目錄上,按右鍵,選擇"Add",然後"Add Group...",輸入群組的名稱. 載入程式碼檔案 : 在專案 Source 目錄上,按右鍵,選擇"Add",然後"Add Files...",選擇程式碼檔案. 選擇的程式碼檔案如下: main.c stm8s_it.c 載入專案程式庫 載入相關的程式庫檔案 修改 Toggle 的 GPB.5 組譯並燒錄到開發板 設定專案檔 選擇正確裝置

nuvoton - PWM

圖片
PWM 的特性 clock frequency up to 144MHz 16 bit resolution counter up counting mode down counting mode up/down counting mode  2 PWM modules Each module with 6 output channel Each module with 3 complementary pair Interrupt event Zero Period Compared value Brake condition happied Capture Timer function 12 capture input channels with 16 bit resolution rising / falling capture input rising / falling capture interrupt rising / falling capture with counter  PDMA transfer for PWM all channels Working mode independent mode architecture complementary mode architecture Counter mode  Double buffering mode PERIOD, CMPDAT, 和 FTCMPDAT 是由開發者設計,但寫入並不會立刻啟動. PBUF, CMPBUF, 和 FTCMPBUF 硬體實際動作的值 當週期完成後,才會載入開發者寫入的新值. Counter loading mode period loading in up-count mode 預設的載入模式 當 PWM Counter 上數到 PERIOD 或者下數到 0 時,會啟動載入 immediately loading PWM channel n 的 IMMLDENn (PWM_CTL0[21:16]) = 1 立刻載入, 當 PERIOD, CMPDAT and FTCMPDAT 被修改. 當 PWM Counter 的數值

nuvoton - ADC Converter

圖片
EADC converter 的特性 12 bits SAR ADC Operation voltage A VDD : 2.5V - 5.5V V REF : 2.5V - A VDD V IN : 0 - V REF External Input channel 16 single-end analog input channels 8 pairs of differential analog input channels  Internal Input Channel Band-gap voltage (VBG) Temperature sensor (VTEMP) Battery power (VBAT) 19 sample modules ADC channel 愈低的愈優先 Channel 0 - channel 15 可以設定 ADC 模組,採樣時序和觸發來源. Channel 16 - band-gap voltage Channel 17 - temperature sensor Channel 18 - battery power (VBAT) An A/D conversion 啟動條件 SWTRGn (EADC_SWTRG[n], n=0..18) = 1 External pin STADC Timer [3:0] overflow pulse triggers ADINT[1:0] interrupt EOC (End of conversion) pulse triggers PWM triggers Support PDMA transfer EADC clock source EADC clock = HCLK / (EADCDIV+1)  up to 21MHz EADCDIV is 8-bit prescaler EADC Block Diagram ADC Sample Module ADC controller 擁有 19 個 A/D sample module, 每個 A/D sample module 包含 19 trigger source. 其中 A/D sample module [3:0]

nuvoton - UART

圖片
UART 的特性 4 channel 的 UART 模組 支援 Auto-Baud Detect 支援 Auto Flow Control Function 支援 nCTS and RX data wake-up function 支援 Fully programmable serial-interface Programmable number of data bit. 5-, 6-, 7-, 8- bit character Programmable parity bit. even, odd, no parity Programmable stop bit. 1, 1.5, 2 bits 支援 IrDA SIR function mode support 3/16 bit duration for normal mode 支援 LIN function mode in UART #0/#1 support master/slave mode support programmable break generation for transmitter support break detection for receiver 支援 RS-485 function mode support 9 bit mode support hardware and software enables to program nRTS  UART Clock Source HIRC (22.1184 MHz) HXT (4-24MHz) PLL  UART Block Diagram UART baud rate work mode Mode BAUDM[1:0] Baud Rate Equation Mode 0 00b UART_CLK / (16 * (BRD+2)) Mode 1 10b UART_CLK / ((EDIVM1+1) * (BRD+2)) EDIVM1 >= 8 Mode 2 11b UART_CLK / (BRD+2) UART_CLK <= 3*HCLK. BRD >= 9

nuvoton - M451 Real Time Clock

圖片
RTC 的特性 1 組 RTC counter Register Description Value TLR Time Counter 0x00144422 PM 02:44:22 CLR Calendar Counter 0x00200203 2020/02/03 DWR Day of the Week Counter 0x00000001 Monday LIR Leap Year Indication 0x00000001 Leap year TAR Time Alarm Value 0x00150000 PM 03:00:00 CAR Calendar Alarm Value 0x00200204 2020/02/04 支援 Alarm 和 time tick 中斷 支援 Wake-up 32 KHz 頻率校正 80 Bytes RTC register 來儲存資料 RTC 的 Block Diagram RTC 模組內部一個計數器,可以運用來做時間的計時器,也可以運用來當鬧鐘,在設定的時間產生中斷,喚醒 MCU。RTC 模組不一樣的部分,不需要再設定 clock source,只需要 Enable 模組。 RTC Coding Flow Enable Clock for RTC module CLK_EnableModuleClock(RTC_MODULE); Open RTC module and start couting S_RTC_TIME_DATA_T sWriteRTC; sWriteRTC.u32Year = 2020; sWriteRTC.u32Month = 1; sWriteRTC.u32Day = 21; sWriteRTC.u32DayOfWeek = RTC_TUESDAY; sWriteRTC.u32Hour = 15; sWriteRTC.u32Minute = 30; sWriteRTC.u32Second = 30; sWriteRTC.u32TimeScale = R