飛凌國產(chǎn)芯片系列干貨|A40i開發(fā)板應(yīng)用筆記-PWM 的應(yīng)用

原創(chuàng) 2021-11-17 10:57:00 A40i

本文講解了國產(chǎn)A40i 開發(fā)板PWM的應(yīng)用,本篇文章主要適用于飛凌 OKA40i 平臺 Linux3.10.65 操作系統(tǒng),其他arm 平臺也可以參考,但是不同平臺之間會存在差異,請自行修改以適應(yīng)自己的使用。 寫本文章的主要目的是協(xié)助客戶加速產(chǎn)品的研發(fā)速度,由于水平有限, 不提供任何的完整性、可靠性等保證,軟件版本更新之后,有些位置名稱等內(nèi)容可能會及時更新,修改方法請參考使用。

一、PWM的應(yīng)用

1、pwm的添加


增加一路 pwm,以 pwm4 為例說明,其他方法類似,只做為參考。

arch/arm/boot/dts/sun8iw11p1.dtsi


中添加


pwm = &pwm;
pwm0 = &pwm0;
pwm4 = &pwm4;
pwm: pwm@01c23400 {
 	compatible = "allwinner,sunxi-pwm";
	reg = <0x0 0x01c23400 0x0 0x154>;
	pwm-number = <1>;
 	pwm-base = <0x4>;
 	pwms = <&pwm4>;
 };
pwm4: pwm4@01c23400 {
	compatible = "allwinner,sunxi-pwm4";
 	pinctrl-names = "active", "sleep";
 	reg_base = <0x01c23400>;
	reg_peci_offset = <0x00>;
 	reg_peci_shift = <0x04>;
	reg_peci_width = <0x01>;
 	reg_pis_offset = <0x04>;
	reg_pis_shift = <0x04>;
	reg_pis_width = <0x01>;
	reg_crie_offset = <0x10>;
 	reg_crie_shift = <0x08>;
 	reg_crie_width = <0x01>;
	reg_cfie_offset = <0x10>;
 	reg_cfie_shift = <0x09>;
 	reg_cfie_width = <0x01>;
	reg_cris_offset = <0x14>;
	reg_cris_shift = <0x08>;
	reg_cris_width = <0x01>;
 	reg_cfis_offset = <0x14>;
	reg_cfis_shift = <0x09>;
	reg_cfis_width = <0x01>;
	reg_clk_src_offset = <0x28>;
	reg_clk_src_shift = <0x07>;
	reg_clk_src_width = <0x02>;
	reg_bypass_offset = <0x28>;
	reg_bypass_shift = <0x05>;
	reg_bypass_width = <0x01>;
 	reg_clk_gating_offset = <0x28>;
 	reg_clk_gating_shift = <0x04>;
 	reg_clk_gating_width = <0x01>;
 	reg_clk_div_m_offset = <0x28>;
	reg_clk_div_m_shift = <0x00>;
 	reg_clk_div_m_width = <0x04>;
	reg_pdzintv_offset = <0x38>;
 	reg_pdzintv_shift = <0x08>;
	reg_pdzintv_width = <0x08>;
 	reg_dz_en_offset = <0x38>;
	reg_dz_en_shift = <0x00>;
	reg_dz_en_width = <0x01>;
 	reg_enable_offset = <0x40>;
	reg_enable_shift = <0x04>;
	reg_enable_width = <0x01>;
 	reg_cap_en_offset = <0x44>;
 	reg_cap_en_shift = <0x04>;
 	reg_cap_en_width = <0x01>;
 	reg_period_rdy_offset = <0xe0>;
 	reg_period_rdy_shift = <0x0b>;
	reg_period_rdy_width = <0x01>;
	reg_pul_start_offset = <0xe0>;
 	reg_pul_start_shift = <0x0a>;
 	reg_pul_start_width = <0x01>;
 	reg_mode_offset = <0xe0>;
	reg_mode_shift = <0x09>;
 	reg_mode_width = <0x01>;
	reg_act_sta_offset = <0xe0>;
 	reg_act_sta_shift = <0x08>;
	reg_act_sta_width = <0x01>;
 	reg_prescal_offset = <0xe0>;
 	reg_prescal_shift = <0x00>;
 	reg_prescal_width = <0x08>;
	reg_entire_offset = <0xe4>;
	reg_entire_shift = <0x10>;
 	reg_entire_width = <0x10>;
 	reg_active_offset = <0xe4>;
 	reg_active_shift = <0x00>;
 	reg_active_width = <0x10>;
 }


按手冊 PWM 修改對應(yīng)的寄存器。

修改 sys_config.fex 中 twi2_used=0 且增加


[pwm4]
pwm_used = 1
pwm_positive = port:PB20<4><0><default><default>
[pwm4_suspend]
pwm_positive = port:PB20<7><0><default><default>


編譯鏡像并燒寫

2、PWM的測試


echo 0 >/sys/class/pwm/pwmchip4/export
echo 1000000 > /sys/class/pwm/pwmchip4/pwm0/period
echo 500000 > /sys/class/pwm/pwmchip4/pwm0/duty_cycle
echo 1 > /sys/class/pwm/pwmchip4/pwm0/enable


測量得到頻率為 1K 方波


echo 0 > /sys/class/pwm/pwmchip4/pwm0/enable
echo 208333> /sys/class/pwm/pwmchip4/pwm0/duty_cycle
echo 416667 > /sys/class/pwm/pwmchip4/pwm0/period
echo 1 > /sys/class/pwm/pwmchip4/pwm0/enable


測量得到頻率為 2.4K 方波


相關(guān)產(chǎn)品 >

  • FETA40i-C核心板

    Allwinner A40i是全志開發(fā)的一款工業(yè)級處理器,A40i作為全國產(chǎn)工業(yè)級芯片中的佼佼者,采用更低功耗的4核ARM Cortex-A7架構(gòu),工作溫度-40-85℃,是一款高性能低功耗超高性能CPU主芯片。飛凌嵌入式深度研究全志A40i芯片參數(shù)、原理圖、datasheet規(guī)格書推出了以FETA40i核心板為主的一系列全國產(chǎn)工業(yè)級嵌入式計算機板卡,并提供了用于評估的A40i工控板、 A40i開發(fā)板。 了解詳情
    FETA40i-C核心板
  • OKA40i-C開發(fā)板

    國產(chǎn)工業(yè)級,高清輸出,豐富接口|OKA40i開發(fā)板采用底板+核心板結(jié)構(gòu),基于全志工控行業(yè)平臺級處理器四核Cortex-A7 A40i設(shè)計,主頻1.2GHz,集成MAli400MP2 GPU,內(nèi)存1GB/2GB DDR3L,存儲8GB eMMC。 全志A40i工控行業(yè)芯片平臺 A40i為國產(chǎn)工控行業(yè)芯,全志A40i處理器代表了Allwin在智能工業(yè)控制領(lǐng)域的成就。飛凌嵌入式A40i系列OKA40i-C開發(fā)板是飛凌推出的一款中國芯,全國產(chǎn)級工業(yè)級開發(fā)板,適用于適用于基于視覺交互的工業(yè)控制產(chǎn)品 了解詳情
    OKA40i-C開發(fā)板

推薦閱讀 換一批 換一批