輕鬆學ARM系列之玩轉蜂鳴器

2021-06-25 14:52:45 字數 1857 閱讀 4679

基於arm的cortex_a8核心的三星s5pv210開發平台。

那麼我們來看一下如何學習使用pwm控制蜂鳴器?

一、總體架構圖

搞定蜂鳴器之前需要我們對三星的gpio簡介的相關章節有一定的了解,主要是timer 定時器。

二、玩轉定時器的幾個要領

2.1 檢視開發板上蜂鳴器的連線的原理圖

蜂鳴器對應的原理圖

核心板的對應的原理圖

2.2 選中gpd0con配置暫存器的xpwmtout1功能

gpd0.gpd0con = ((~(0xf 0))& gpd0con)| (0x2 << 4);選為pwm輸出功能

2.3 配置預分頻和分頻暫存器的配置

配置預分頻的值,timer.tcfg0 = (time.tcfg0 & (~0xff)) | 0xff ;

預分頻的值設定為255 + 1

配置分頻的值為16分頻:

timr.tcfg1 = (time.tcfg1 & (~0xf0))| (0x4 << 4);

2.4 設定緩衝計數器的暫存器值和緩衝比較器的值

工作原理:計數器的值每隔乙個時鐘週期,做減1操作,如果減到值與比較器的值相等那麼進行高低電平的轉換,繼續遞減1,直到為0,那麼翻轉,實現了乙個完整的方波週期

設定計數緩衝區暫存器值

time.tcntb1 = ***; 設定總週期,乙個pwm

設定比較緩衝區暫存器值

time.tcmpb1 = ***/2; 設定是占空比

2.5 手動更新緩衝暫存器中的值到計數器中

設定pwm的步驟:

根據是1.3.15的第二步,先設定手動更新,在清除手動更新,啟動定時器

手動更新,使緩衝器中的值更新到計數器中,雙緩衝機制

time.tcon = time.tcon & (0x0e << 8) ; 0000 1110

清除手動更新位,啟動定時器。 0000 1101  0x0d

time.tcon = time.tcon & (0x0d << 8) ;

輕鬆學ARM系列之I2C匯流排

一 總體架構圖 二 i2c操作的一般步驟 2.1 檢視s5pv210開發板的i2c相關的硬體原理圖 開發板上iic實際連線電路,at24c02為eeprom,大小為2k位,256位元組 核心板對應的原理圖 2.2 設定gpio暫存器為i2c功能 配置gpd1con 0 和 gpd1con 1 為i2...

Linux之輕鬆玩轉Vim

vim常用指令如下表 命令作用 set nu 在每一行前顯示行號 set nonu 取消行號顯示 set mouse a 顯示滑鼠 set cursorline 顯示滑鼠 在vim下進行操作當程序結束時進行的操作都會還原,要想永久儲存操作需要在vim etc vimrc進行引數設定 關鍵字 n向下匹...

輕鬆學Linux之使用轉義字元

轉義字元是c語言中表示字元的一種特殊形式。通常使用轉義字元表示ascii碼字符集中不可列印的控制字元和特定功能的字元,如用於表示字元常量的單撇號 在unix作業系統中有一類特殊的字元,叫做元字元。linux unix系統中,就是採用轉義和引用這兩種方式來處理。系統中有些命令特別複雜,特別是那些部屬在...