STM32的PWM和DAC練習
一、用STM32F103輸出一路PWM波形
PWM輸出就是對外輸出脈寬(即佔空比)可調的方波訊號,訊號頻率由自動重灌暫存器 ARR 的值決定,佔空比由比較暫存器 CCR 的值決定。PWM 模式分為兩種,PWM1 和 PWM2,總得來說是差不多。
實驗時用的野火自帶的程式碼
修改程式碼main.c
#include "stm32f10x.h"
#include "bsp_led.h"
#include "bsp_GeneralTim.h"
/**
* @brief 主函式
* @param 無
* @retval 無
*/
int main(void)
{
/* led 埠配置 */
LED_GPIO_Config();
/* 定時器初始化 */
GENERAL_TIM_Init();
while(1)
{
}
}
生成hex檔案
燒錄
結果
二、輸出一個週期2khz的正弦波(迴圈)
根據實驗教程
我們需要輸出一個週期為2kHz的正弦波,通過計算公式,我們可以得到,一共需要3600個取樣點
開啟野火自帶的正弦波表製作指令碼,生成3600個取樣點,這些點存在.c檔案中
matlab程式碼
%用於產生正弦資料表,輸出到檔案dac_sinWave.c 檔案中,複製到c語言陣列即可
n = 2*pi/3600 : 2*pi/3600 : 2*pi %分成3600等份
a = sin(n)+1; %求取sin函式值並向上平移一個單位,消除負數值
a = a * 3.3/2; %調整幅值,使範圍限制為0~3.3
r = a* (2.^12) /3.3 %求取dac數值,12位dac LSB = 3.3/2.^12
r = uint16(r); %把double型資料轉化成16位整型資料
for i = 1:32
if r(i) > 4095 %限制資料最大不超過4095
r(i) = 4095
end
end
dlmwrite('dac_sinWave.c',r); %把資料寫入到檔案,方便新增到stm32工程中
plot(n,r,'.') %把這些點畫出來
用matlab生成的點
工程檔案
把點數放進uint16_t Sine12bit[POINT_NUM]
燒錄用示波器觀察結果
三、將一段數字音訊歌曲資料轉換為模擬音訊波形輸出
用Adobe Audition開啟一段音訊,設定取樣8khz,量化16bit,單通道,儲存下來
開啟開啟檔案,生成程式碼
工程檔案
把點數放進uint16_t Sine12bit[POINT_NUM]
結果
相關文章
- STM32系列 PWM輸出
- 比例閥驅動電路後級PWM濾波尖刺如何消除?PWM通過RC低通濾波器模擬DAC
- STM32標準庫通用定時器PWM生成定時器
- STM32一個定時器輸出四路不同頻率和佔空比PWM波的方法定時器
- adc/dac
- (前++) 和 (後++)的練習題
- PWM
- STM32 的學習方法
- 【春節歌曲回味 | STM32小音樂盒 】PWM+定時器驅動無源蜂鳴器(STM32 HAL庫)定時器
- PWM同步
- 學習 stm32
- qsort的模擬實現和練習
- 正規表示式學習和練習
- STM32學習記錄(一):STM32概述
- D/A轉換器(DAC)
- STM32學習程式
- markdown 使用練習練習
- 練習的力量
- Array的練習
- FPGA的DAC轉換部分遇到的問題FPGA
- 全選練習-原生版和jQueryjQuery
- STM32學習步驟
- 微控制器學習(九)定時器掃描按鈕和數碼管與PWM的使用定時器
- 賦值運算子和+號的用法(兩個練習)賦值
- STM32使用定時器在普通gpio上模擬pwm-紅牛開發板LED1的亮度調節定時器
- stm32學習筆記——基本的地址操作筆記
- 新手練習:Python練習題目Python
- 偽類的練習
- 表單運用和基礎練習
- STM32學習筆記——GPIO筆記
- MYSQL練習1: DQL查詢練習MySql
- FPGA基礎設計(6)使用DAC的Interleaved模式FPGA模式
- Argo workflow 案例練習和配置詳細解析Go
- 疾病預測和天氣分析練習賽
- javaSE練習--運算子和條件結構Java
- STM32學習筆記——中斷筆記
- STM32學習記錄(九):RTC
- stm32學習之ADC入門