找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4082|回復(fù): 9
收起左側(cè)

使用STM32生成正弦波程序看不懂,本人小白

[復(fù)制鏈接]
ID:851922 發(fā)表于 2021-1-18 16:52 | 顯示全部樓層 |閱讀模式
不知哪位大佬給解釋解釋下面那個(gè)公式 小白看不懂
void SineWave_Data( u16 cycle ,u16 *D,float Um)
{
    u16 i;
    for( i=0;i<cycle;i++)
    {
        D[ i]=(u16)((Um*sin(( 1.0*i/(cycle-1))*2*PI)+Um)*4095/3.3);
回復(fù)

使用道具 舉報(bào)

ID:592807 發(fā)表于 2021-1-19 08:51 | 顯示全部樓層

    for( i=0;i<cycle;i++)
    {
        D[ i]=(u16)((Um*sin(( 1.0*i/(cycle-1))*2*PI)+Um)*4095/3.3);
    }

在這里sin(( 1.0*i/(cycle-1))*2*PI)你可以理解成sin(x)(x >= 0 且 x <=2派,當(dāng)i= 0時(shí),x= 0;當(dāng)i= cycle - 1時(shí), x = 2派,x隨著i的增大而增大),cycle就是sin(x)的周期,也可以說(shuō)是寬度,cycle越大,正弦波的過(guò)零點(diǎn)距離越大。


在這里(Um*sin(( 1.0*i/(cycle-1))*2*PI)+Um)你可以理解成A * sin(x) +A,A就是正弦波的幅度也就是最大值,A*sin(x)+ A,就是將正弦波函數(shù)的向上挪移A個(gè)單位,這樣就將正弦波中的負(fù)數(shù)值變?yōu)檎龜?shù)值,最大值變成2A,最小值變?yōu)?.



最后那個(gè)*4095/3.3,就是個(gè)模數(shù)轉(zhuǎn)換,將模擬量轉(zhuǎn)換成數(shù)字量,4095是12位的DAC。



這個(gè)函數(shù)一般用作模數(shù)轉(zhuǎn)換或者LCD畫(huà)圖像。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:752974 發(fā)表于 2021-1-19 10:32 | 顯示全部樓層
正弦波生成我比較喜歡用查表法,簡(jiǎn)單,CPU負(fù)擔(dān)也小。先將一個(gè)周期的正弦波數(shù)據(jù)算好存儲(chǔ),然后讀數(shù)據(jù)輸出就可以了。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:584814 發(fā)表于 2021-1-19 16:19 | 顯示全部樓層
樓上的解釋都深?yuàn)W了,要先解釋什么是三角函數(shù)才合理
回復(fù)

使用道具 舉報(bào)

ID:592807 發(fā)表于 2021-1-19 20:30 | 顯示全部樓層
man1234567 發(fā)表于 2021-1-19 16:19
樓上的解釋都深?yuàn)W了,要先解釋什么是三角函數(shù)才合理

如果真的是這中純粹的小白,那只能當(dāng)我沒(méi)回過(guò)這個(gè)貼,教不了,告辭。
回復(fù)

使用道具 舉報(bào)

ID:752974 發(fā)表于 2021-1-20 08:39 | 顯示全部樓層
man1234567 發(fā)表于 2021-1-19 16:19
樓上的解釋都深?yuàn)W了,要先解釋什么是三角函數(shù)才合理

不知道三角函數(shù)的話,就別要自行車(chē)了!
回復(fù)

使用道具 舉報(bào)

ID:612392 發(fā)表于 2021-1-20 09:01 | 顯示全部樓層
為什么不查表呢?這樣計(jì)算,就是在浪費(fèi)MCU資源呀。。。
回復(fù)

使用道具 舉報(bào)

ID:851922 發(fā)表于 2021-1-20 20:16 | 顯示全部樓層

懂了 懂了  非常感謝
回復(fù)

使用道具 舉報(bào)

ID:851922 發(fā)表于 2021-1-20 20:17 | 顯示全部樓層
man1234567 發(fā)表于 2021-1-19 16:19
樓上的解釋都深?yuàn)W了,要先解釋什么是三角函數(shù)才合理

哈哈哈  從三角函數(shù)開(kāi)始倒還不至于
回復(fù)

使用道具 舉報(bào)

ID:213124 發(fā)表于 2021-1-20 22:50 | 顯示全部樓層
三十年前,老師傅們做的變頻器
就不用單片機(jī),用存儲(chǔ)模塊,數(shù)字電路,就可以生成了
單片機(jī)里,存一個(gè)表,定時(shí)輸出表里的數(shù)據(jù),再DA就成啊
簡(jiǎn)單,高效
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表