驅動蜂鳴器與雞翅LED是一樣的,對于I.MX6ULL
來說只需要對指定的引腳輸出高或者低電平即可。
找到蜂鳴器使用的引腳
打開I.MX6ULL
開發(fā)板原理圖,找到蜂鳴器接的引腳
可以看出,蜂鳴器正極接的是三極管,負極接地,想讓蜂鳴器工作就需要讓三極管導通。這是一個PNP
型三極管,基極
接的是BEEP,想讓三極管導通蜂鳴器工作需要給BEEP一個低電平。
再看一下BEEP具體接的是I.MX6ULL
的哪一個管腳
從圖中可以看出,BEEP具體接的是SNVS TAMPER1
初始化BEEP對應引用
從I.MX6ULL
的參考手冊里面的32.5.4
小節(jié)中可以找到關于SNVS TAMPER1
寄存器,現(xiàn)在需要將他復用成通用GPIO
,通過查看手機復用之后是GPIO5_IO01
,所以在初始化蜂鳴器GPIO
時也就是將SNVS TAMPER1
寄存器復用成GPIO5_IO01
:
IOMUXC_SetPinMux(IOMUXC_SNVS_SNVS_TAMPER1_GPIO5_IO01, 0);
同時設置GPIO5_IO01
的電氣屬性為:
IOMUXC_SetPinConfig(IOMUXC_SNVS_SNVS_TAMPER1_GPIO5_IO01, 0x10B0);
設置GPIO5_IO01
的輸入輸出:
/// 設置GPIO5的第1位即IO01為輸出,默認電平為低電平
PIO_Init(GPIO5, 1, (GPIO_CONFIG){GPIO_DIRECTION_OUTPUT, 0});
控制蜂鳴器
控制GPIO5_IO01
的DR
寄存器,通過寫入低(0)電平來打開蜂鳴器,寫入高電平(1)來關閉蜂鳴器。
void Beep_On()
{
GPIO_SetValue(GPIO5, 1, 0);
}
void Beep_Off()
{
GPIO_SetValue(GPIO5, 1, 1);
}
驗證
在main
文件中對應的開LED
燈的位置打開蜂鳴器,關燈的地方關閉蜂鳴器。
#include
#include "delay.h"
#include "clk.h"
#include "led.h"
#include "beep.h"
int main(void)
{
Clk_Init();
Led_Init();
Beep_Init();
while (1)
{
Delay(500);
Led_On();
Beep_On();
Delay(500);
Led_Off();
Beep_Off();
}
return 0;
}
最后,通過Makefie
編譯成bee.bin并燒寫到開發(fā)板即可聽到蜂鳴器工作了。
-
led
+關注
關注
242文章
23277瀏覽量
660869 -
蜂鳴器
+關注
關注
12文章
891瀏覽量
45947 -
IMX6ULL
+關注
關注
3文章
16瀏覽量
4042
發(fā)布評論請先 登錄
相關推薦
評論