PIXNET Logo登入

漢亞科技 Han-Ya

跳到主文

位於高雄市區的工作室,提供程式設計,軟韌體設計,系統開發的服務。 20年以上的軟韌體設計經驗, 如:MCU (STM32, NXP LPC), ESP32, Raspberry Pi (樹莓派), Arduino, 德州儀器 DSP 程式設計(C62x/C64x/C55x/C281x), CSR 藍芽開發, FTDI USB開發。 聯絡方式: yijenlu1971@gmail.com 或 yijenlu@yahoo.com

部落格全站分類:社團組織

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 8月 08 週四 201916:07
  • [單晶片] 以 STM32 晶片的 ADC 為基礎, 設計一個簡易示波器

目的:以 ADC 模組為基礎,設計一個簡易示波器觀察訊號變化,同時能記錄每筆資料以便數值分析。
設計:使用 STM32 系列晶片內的 ADC 模組,將類比訊號轉換成數位資料,然後將整筆數據從網路傳送到 PC 端,再由 PC 程式接收後繪製成曲線圖。開發過程,利用前面一文「以 STM32 晶片的 DAC 為架構設計一個訊號產生器」所產生的方波當做待測訊號源,此訊號源輸入到 ADC 接腳,如下圖一所示。





圖一:設計完整示波器的方塊圖


       下圖是程式碼設定 ADC 的參數,第一個要先設定 ADC 取樣率的刻度,再來設定取樣率,如下面紅線標示。取樣率跟晶片的 operating clock 有關,從系統的高速時脈降頻到 ADC 的取樣率。第二個是選定 ADC 轉換資料的精密度,精密度越高,資料量則越大。最後,設定 ADC 轉換完畢後產生中斷通知 CPU,每次 ADC 轉換資料後,中斷的 IRQ 便會把數值從暫存器搬到記憶體裡。在設計裡,我們宣告兩塊 buffer 存放數值。





圖二:ADC 參數設定


        下圖是在 PC 端寫一個網路接收資料的程式,並把資料繪製成曲線圖。當 ADC 取樣率為 15.2KHz時,從PC端看到的圖形比較像弦波,當我把 ADC 取樣率提高為 48KHz 時,PC端看到的圖形就像一個方波了。不過,取樣率高低對設計來說是一項架構問題,取樣率越高,代表資料量越高,傳輸速率越大,所需要的網路頻寬要夠,還要晶片的CPU有足夠的效能才行。
 





圖三-1:ADC 取樣率 15.2K 所顯示的方波







圖三-2:ADC 取樣率為 48K 所顯示的方波


問題:DMA資料搬運過程不穩定,當取樣率越高的時候,DMA搬運出現資料錯亂的情況。將這個問題放到 StackOverflow 網站尋求解答,連結如下「ADC 與 DMA 資料搬運的問題」。所以,在上面的測試過程,我們都採用 ADC 中斷的方式搬運資料到記憶體,而不是 DMA。
(繼續閱讀...)
文章標籤

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣(417)

  • 個人分類:單晶片
▲top
  • 8月 08 週四 201916:04
  • [單晶片] 以 STM32 晶片的 DAC 為架構設計一個訊號產生器

目的:產生方波或正弦波的訊號
設計:以 STM32 系列內建的 DAC 模組為架構,搭配內部的 Timer 當做取樣率,讓 DAC 輸出週期性訊號。
 
        我們設計訊號產生器靠 DAC 模組將數值轉換成類比訊號,接著產生一個週期性訊號需要使用 Timer,利用它產生的 event 通知我們產生一個訊號數值,簡單說就是一個取樣點,而取樣率就是 Timer 的參數設置。這裡會有個效能的問題,如果取樣速率越高,那麼系統核心每次要 DAC 轉換數值的頻率就會增加,這會占用到系統 CPU 的運算時間。因此,DAC 需要配合 DMA 模組以達到系統效能。
 
        圖一所示為上述三個模組的運作流程圖,第一步 Timer 產生取樣點的事件,驅動第二步的 DAC 模組,因為設定 DAC 與 DMA 搭配合作,第三步 DAC 會對 DMA 發出一個請求,要求 DMA 將波形訊號數值搬到 DAC 暫存器裡面,最後 DMA 執行這個請求。
 





圖一:STM32 DAC 運作的流程圖


 
 
 
        圖二和圖三所示為程式碼的說明,首先要宣告一塊記憶體存放波形資料,這陣列代表一個波形的完整週期。接著,我們要初始化 Timer、DAC、DMA 模組,Timer 設定取樣率,DMA 和 DAC 要設定資料搬運的位址與長度。設計到這裡,比較困難的地方在怎麼計算適當的取樣率,它會影響到波形的週期大小。我們以 STM32F207 晶片為例,Timer 模組的 clock 是 60MHz,當 TIM_Period 設定為 500 時,每個取樣點產生的頻率為 120KHz = 60MHz/500,再來看一個完整波形的週期需要 30 個取樣點,所以這個波形頻率為 4KHz = 120KHz/30,其週期為 250us。程式在 STM32F207 板卡上運行的結果顯示在最後一張圖。






圖二:波形資料的定義







圖三:每個模組參數的初始化



(繼續閱讀...)
文章標籤

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣(241)

  • 個人分類:單晶片
▲top
  • 11月 12 週一 201813:38
  • [應用] USB host 轉換到 RS-232 的解決方案



        最近遇上一個問題,工業儀器設備越來越多採用USB介面取代RS-232,造成原本RS-232設備無法對接。就介面標準來看,在工業使用上 RS-232 是點對點的通訊協定,沒有主從分別的傳輸介面,傳輸距離數十公尺遠,如果再轉成 RS-485 傳輸距離更遠。相對於USB,具有主從架構的傳輸介面,因為來自電腦介面的標準,傳輸線距離僅數公尺遠。然而,坊間看到的 USB To RS232 轉換線只是 USB slave,必須接到電腦 (USB host),這種傳輸線無法直接接 USB儀器 (USB slave),所以我先要找到一個 USB host 轉換中介,再寫一個轉換程式後,才能把 USB儀器的數據轉到 RS-232 設備上。
 
(繼續閱讀...)
文章標籤

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣(40)

  • 個人分類:
▲top
  • 8月 29 週三 201809:36
  • [語音] 中文語音合成+中文語音辨識 以百度的AI開放平台 in Python 開發



        語音合成和語音辨識的技術存在數十年,不過近年來將這語音的技術應用在蘋果的Siri和亞馬遜的echo設備裡。對開發者而言,語音技術最麻煩的是各種語言、不特定人的字庫辭庫訓練,光要建立這龐大且精準的訓練庫就不是短時間能完成的。最近,發現百度(Baidu)提供中文語音合成和語音辨識的服務,網站如下:AI開放平台,裡面不只有語音技術服務,還有其他技術。調用百度各項技術的SDK,建立網路連結後,連上AI開放平台,便能取得合成的結果或者辨識的結果。另外,SDK也有提供各種程式語法的範例,如:Java、C++、C#、Python、Node.js ... 等等,以滿足各類程式開發者的需求。底下我以Python語法為例,開發一個中文語音合成+語音辨識的測試程式。


(繼續閱讀...)
文章標籤

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣(48)

  • 個人分類:
▲top
  • 7月 19 週四 201812:50
  • [模組] LoRa - Arduino MKRWAN 1300 通訊模組


        最近從網上買了兩個Arduino MKRWAN,屬於LoRa開發板的一種,可以拿來研究物聯網的通訊傳輸,一個用來當發送端,另一個用來當接收端。首先瞭解開發板的架構,Arduino MKR WAN 1300開發板是由ATMEL SAMD晶片,再搭配 LoRa 模組所組成,系統方塊圖如下所示。
        在下圖的左邊,ATMEL SAMD就是Arduino Zero開發板的控制器,以Cortex-M0為核心的晶片。而在下圖的右邊,LoRa模組是由Murata公司製作的通訊模組,該模組內部包含一顆STM32L系列的控制器和一顆SX1276 LoRa晶片。在市面上容易買到單獨SX1276/78晶片的LoRa模組,這種必須仔細了解SX1276內部暫存器的設定才能順利開發與運用。另外,也有一類模組還包含一顆控制器,通常這種模組是用 AT command 方式來控制 LoRa 傳輸,很多複雜的控制命令已經被封裝成 AT 指令了,對初次接觸LoRa開發的人來說會方便許多。
 
 
 








Arduino MKRWAN 1300 方塊圖





 
(繼續閱讀...)
文章標籤

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣(75)

  • 個人分類:
▲top
  • 1月 25 週四 201812:53
  • [單晶片應用] 環境監控系統



系統架構:
由環境監測元件和運算控制元件所組成的硬體,如圖一所示,再搭配流程控制軟體組成一個完整的系統。每個環境監測元件透過無線網路的方式連接到運算控制元件,將每處環境的數值傳給運算元件,再由運算元件計算出最佳的環境狀態,進而控制電力、空調或風扇…等周邊系統。
(繼續閱讀...)
文章標籤

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣(89)

  • 個人分類:程式開發
▲top
  • 9月 05 週二 201716:03
  • [單晶片] 在 ARM 控制器上實現一個 FTP server



        最近實現在 STM32F207 控制器 (ARM-based) 上面實現一個簡易型的 FTP server,其目的是為了文件的傳輸。原本在一般電腦上的 FTP 是一個再平常不過的網路功能,但是在 embedded system 上如果沒有搭配 Linux 作業系統,通常要自行開發 FTP 才行。圖一所示就是 STM32F207 控制器,上面有網路介面和 SD 卡,我們希望從遠端能將儲存在 SD 卡上的文檔經由網路下載,而這個 SD 卡就類似硬碟的功能。
 
(繼續閱讀...)
文章標籤

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣(286)

  • 個人分類:單晶片
▲top
  • 7月 27 週四 201718:13
  • [語音] 撥放器 - WT588D 語音模組



        語音播放器應用在停車場系統、音樂鈴、語音導航...等等。之前曾使用過一款語音IC -(新唐的 ISD15100 系列)- 單晶片內建 FLASH,可以儲存語音資料且音源輸入出的功能齊全,可說非常便利。後來,筆者發現 WT588D 語音模組的價格更為親民 (大約50~100 TWB 與儲存容量大小有關),而且從網上零售採購非常容易,這是開發者的福音。
 
(繼續閱讀...)
文章標籤

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣(248)

  • 個人分類:單晶片
▲top
  • 6月 19 週一 201706:59
  • [單晶片] Microchip dsPIC30F 結合藍芽模組



        最近用 Microchip dsPIC30F4011 的開發板 (APP020 PLUS) 結合藍芽模組,如下圖所示,打算做一個馬達控制的顯示器。之前,接觸的 MCU 都是 STM32 和 NXP LPC 以 ARM 為核心的 32-bit 控制器。有機會首次使用 Microchip 的控制器,於是查詢了一下才了解 Microchip 發展很久了,過去主要以 8-bit 或 16-bit MCU 為主,目前也有 32-bit MCU。搜尋的過程中,大多數找到 8/16 bit 的資料是10年前的,這跟市場主流控制器是 32-bit 有關吧。dsPIC30F4011 系列晶片與 PIC 系列不同的地方在於一個核心有 DSP 運算指令,一個則無。目前使用的這顆 dsPIC30 相當於 ARM M0 等級的控制器,不過價格上,似乎 dsPIC30 比較貴,這就視使用者的應用而決定了。
 
(繼續閱讀...)
文章標籤

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣(211)

  • 個人分類:程式開發
▲top
  • 1月 27 週五 201710:15
  • [APP] Android 頁面 layout 的基本設計


        前陣子在開發安卓系統的 SIP 撥號功能 (參考 "SIP Voip 在 Android 系統上的開發" 一文),底層 NDK 設計與編譯大致完成,接下來要設計使用者頁面。首先,必須在腦海中約略規劃一個使用者頁面的雛形,再根據這個雛形設計一個符合 Android 系統的 layout。我們可以思考整個頁面該如何的布局,是垂直型排列或者水平的排列?還是類似表格式的布局?
 
        就布局而言,安卓系統的 Layout 分成三大類型,分別是 LinearLayout、RelativeLayout 和 TableLayout。LinearLayout 顧名思義就是內部 Widget 元件必須是直線布局,直線的排列可分為垂直或水平 (這裡可沒有斜線喔!)。RelativeLayout 是指內部的元件屬於不規則型的布局方式,每個元件彼此間靠著相對位置來排列。TableLayout 是指元件排列方式屬於表格類型,由幾行幾列所組成。
 
        使用者頁面可以由上述三種類型混合搭配設計而成,每個大 layout 裡面又可以由小的 layout 組成,類似一種巢狀的架構。用例子說明更容易明白,圖一的左邊所示是一個撥號頁面的使用者介面,圖一的右邊所示則為頁面的布局概念圖。這個 APP 頁面布局是由一個具有垂直排列的大型 LinearLayout 構成,裡面再包含四個小型 layout。由於是垂直排列,所以裡面這四個子 layout 從上到下依序排列。第一個子布局是具有水平排列的 LinearLayout,因此裡面的 Widget 元件由左到右排列。接著底下的子布局有四個方向鍵和兩個按鈕,因為不具有垂直或水平排列的特質,只能用 RelativeLayout 來規劃這六個按鈕的相關位置。撥號盤的排列像是表格 4 x 4 的布局,所以這裡用 TableLayout 很適合。最底下四個按鈕呈現水平排列則使用 LinearLayout 布局。
 

(繼續閱讀...)
文章標籤

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣(26)

  • 個人分類:
▲top
«1...45611»

最新文章

  • STM32H750 如何宣告一塊外部記憶體? 而不發生 HardFault 異常。
  • ARM Compiler 6 且不勾選 MicroLIB,晶片無法開機運行?
  • 思考 DeepSeek 背後的方法邏輯
  • Edge Impulse平台的影像辨識模型
  • 港交所的中特估 H股 (保險類)
  • [筆記] RTSP stream server on Windows
  • 工控板 STM32H750 ADC / DAC / 網路介面
  • 工控板 STM32F407 / 24-bit ADC / 乙太網路介面
  • [模組] STM32 藍芽模組 -- BlueNRG-2 模組
  • 股市的技術指標(RSI、KD、MACD)與物理力學的關係

文章分類

  • 單晶片應用 (17)
  • 單晶片 (23)
  • DSP (7)
  • 程式開發 (25)
  • 書籍 (6)
  • 公司新聞 (3)
  • 論文 (5)
  • 嗜好 (1)
  • 未分類文章 (1)

最新留言

  • [23/09/08] JeJe4咖照 於文章「[應用] 預訓練模型庫 PaddleHu...」留言:
    ***謝謝Han-Ya分享的資訊 & 體驗心得,很詳盡喔 &...
  • [23/07/14] 漢亞科技 Han-Ya 於文章「整理人工智慧 AI、機器學習 ML、深度...」留言:
    https://han-ya.blogspot.com/20...
  • [23/05/29] 漢亞科技 Han-Ya 於文章「[筆記] 恩智浦 NXP LPC55S6...」留言:
    影片連結 https://youtu.be/BCtn6Tz...
  • [22/05/22] 漢亞科技 Han-Ya 於文章「[筆記] 以 RISC-V 架構的 MC...」留言:
    https://www.techbang.com/posts...
  • [20/06/26] 漢亞科技 Han-Ya 於文章「[應用] 雲運算之語音辨識 (Speec...」留言:
    https://han-ya.blogspot.com/20...
  • [20/06/26] 漢亞科技 Han-Ya 於文章「[應用] Jitsi Meet serv...」留言:
    https://han-ya.blogspot.com/20...
  • [15/01/23] 軟硬整合開發商 於文章「CSR 藍芽開發板...」留言:
    忘了留我的信箱 canner.tang@gmail.com...
  • [15/01/23] 軟硬整合開發商 於文章「CSR 藍芽開發板...」留言:
    您好有接案開發嗎?CSR晶片...
  • [14/03/17] 漢亞科技 Han-Ya 於文章「[單晶片] 量測溫度和濕度...」發表了一則私密留言
  • [14/03/16] sheep781115 於文章「[單晶片] 量測溫度和濕度...」發表了一則私密留言

參觀人氣

  • 本日人氣:
  • 累積人氣: