美女网站一区二区_在线观看日韩毛片_成人在线视频首页_欧美精品一区二区三区久久久_国产精品亚洲一区二区三区在线_日本免费新一区视频_日本美女一区二区三区_精品亚洲成a人_久久不见久久见免费视频1_91首页免费视频_欧美一区二区在线看_91精品91久久久中77777_天堂蜜桃一区二区三区_av在线一区二区_欧美不卡一区二区_欧美影视一区二区三区

產(chǎn)品分類

當(dāng)前位置: 首頁 > 產(chǎn)品應(yīng)用

類型分類:
科普知識
數(shù)據(jù)分類:
產(chǎn)品應(yīng)用

NXP iMX7 M4核心PWM驅(qū)動(dòng)開發(fā)

發(fā)布日期:2022-04-27 點(diǎn)擊率:152

  • 關(guān)鍵詞: ARM FreeRTOS PWM

  • 摘要:在早先的一篇文章已經(jīng)介紹過基于NXP iMX7 異構(gòu)多核架構(gòu)進(jìn)行開發(fā)調(diào)試,本文就延續(xù)這一篇文章的介紹,以PWM功能為示例著重介紹在iMX7 多核架構(gòu)里面的M4核心上面開發(fā)驅(qū)動(dòng)的方式。



1). 簡介

在早先的一篇文章已經(jīng)介紹過基于NXP iMX7 異構(gòu)多核架構(gòu)進(jìn)行開發(fā)調(diào)試,本文就延續(xù)這一篇文章的介紹,以PWM功能為示例著重介紹在iMX7 多核架構(gòu)里面的M4核心上面開發(fā)驅(qū)動(dòng)的方式。


而本文所演示的ARM平臺同樣來自于Toradex 基于NXP iMX7 ARM處理器的Colibri iMX7 ARM嵌入式平臺。


2. 準(zhǔn)備

a). ColibriiMX7S ARM核心版配合Colibrievaluation Board,分別連接A7核心默認(rèn)調(diào)試串口UART1(載板X27)和M4核心默認(rèn)調(diào)試串口UART2(載板X25上)到開發(fā)主機(jī)方便調(diào)試,另外由于iMX7S只支持一個(gè)USB接口,需要通過載板X30連接一個(gè)USB Hub后來擴(kuò)展鍵盤鼠標(biāo)外設(shè)。更多關(guān)于Colibri iMX7的說明請參考Datasheet和Linux開發(fā)上手指南。


b). Colibri iMX7A7核心系統(tǒng)使用Toradex官方發(fā)布的EmbeddedLinux,更新方法請參考這里。


c). 另外,由于本文演示示例使用到了載板上面PWM驅(qū)動(dòng)LED和按鍵資源,需要連接如下:

X10 SODIMM-28 -> X21LED1

X10 SODIMM-133 -> X21SW6


d). SEGGER J-link 仿真器,USB一端連接開發(fā)主機(jī),JTAG一端連接載板X13。



3). Colibri iMX7 M4核心FreeRTOS基本資料

a). Colibri iMX7 架構(gòu)基本說明請參考如下:

 https://developer.toradex.cn/knowledge-base/freertos-on-the-cortex-m4-of-a-colibri-imx7


b). 本示例中M4核心運(yùn)行FreeRTOS v8系統(tǒng),相關(guān)的源代碼和sample程序請從下面git下載:

http://git.toradex.cn/cgit/freertos-toradex.git/


c). 基本的SDK配置和編譯請參考如下:

https://developer.toradex.cn/knowledge-base/freertos-on-the-cortex-m4-of-a-colibri-imx7#Linux_support


d). 編譯好的M4 firmware如何在Colibri iMX7上面加載運(yùn)行請參考如下:

https://developer.toradex.cn/knowledge-base/freertos-on-the-cortex-m4-of-a-colibri-imx7#Running_a_Firmware_on_CortexM4


e). 幾個(gè)自帶的sample代碼簡單說明請參考如下:

https://developer.toradex.com/knowledge-base/freertos-on-the-cortex-m4-of-a-colibri-imx7#Examples



4). Colibri iMX7 M4核心FreeRTOS PWM驅(qū)動(dòng)開發(fā)

a). 在上一章節(jié)中提到的iMX7 M4 FreeRTOS源代碼中,已經(jīng)包含了一些接口的驅(qū)動(dòng)示例,比如GPIO,UART,I2C,F(xiàn)lexcan等,但并沒有包含PWM部分,因此我們需要手動(dòng)添加PWM驅(qū)動(dòng)。


b). 首先我們要找到提供iMX7芯片核心寄存器定義的macrocode文件,獲取PWM相關(guān)寄存器定義以及做細(xì)微調(diào)整。

./ 文件為platform/devices/MCIMX7D/include/MCIMX7D_M4.h

這個(gè)文件是整個(gè)iMX7 M4 FreeRTOS代碼最核心的文件之一,里面定義了所有芯片寄存器macro code,具體的寄存器功能說明需要參照 NXP iMX7 Reference Manual文檔。

./ 在這個(gè)文件里面,如下”PWM Peripheral Access Layer”開始的部分定義了PWM相關(guān)的寄存器,是最關(guān)鍵的部分。

-----------------------------

 -- PWM Peripheral Access Layer


typedef struct {

__IO uint32_t PWMCR;                                 

__IO uint32_t PWMSR;                                 

__IO uint32_t PWMIR;                                 

__IO uint32_t PWMSAR;                                

__IO uint32_t PWMPR;                                 

__I   uint32_tPWMCNR;                                

} PWM_Type, *PWM_MemMapPtr;

-----------------------------

./ 在這里,為了后面PWM驅(qū)動(dòng)配置方便,我們做了如下patch

https://github.com/simonqin09/iMX7_M4_PWM_Driver/blob/master/MCIMX7D_M4.patch


c). 然后是關(guān)于CCM(ClockControl Module)驅(qū)動(dòng)配置頭文件,添加PWM所需要的clock源

./ 文件為 - platform/drivers/inc/ccm_imx7d.h


./ 如下patch,增加PWM所需clock gate

https://github.com/simonqin09/iMX7_M4_PWM_Driver/blob/master/ccm_imx7d.patch


d). 接下來就是在 ”plaftform/drivers/inc” 和 ”platform/drivers/src” 下分別增加PWM驅(qū)動(dòng)頭文件”pwm_imx.h” 和源文件 ”pwm_imx.c”,完成PWM相關(guān)基本寄存器的讀寫操作等基本功能函數(shù)的實(shí)現(xiàn)。

./ pwm_imx.h 文件代碼如下

https://github.com/simonqin09/iMX7_M4_PWM_Driver/blob/master/pwm_imx.h


./ pwm_imx.c 文件代碼如下

https://github.com/simonqin09/iMX7_M4_PWM_Driver/blob/master/pwm_imx.c



5). Colibri iMX7 M4核心FreeRTOSPWM驅(qū)動(dòng)應(yīng)用示例

a). 在上面章節(jié)基本驅(qū)動(dòng)配置好之后,我們就可以調(diào)用驅(qū)動(dòng)進(jìn)行示例開發(fā)了。本文就簡單演示通過一個(gè)GPIO按鍵來動(dòng)態(tài)調(diào)整PWM輸出占空比的示例。本示例所使用的GPIO Key為examples里面已經(jīng)配置的”BOARD_GPIO_KEY_CONFIG”,PWM使用為PWM2。


b). 首先進(jìn)入 “examples/imx7_colibri_m4”目錄,對幾個(gè)基本文件進(jìn)行修改適配

./ board.h – 這個(gè)文件定義了當(dāng)前examples下所有示例所涉及到的接口,中斷,clock等定義,因此需要將PWM2相關(guān)定義添加進(jìn)來,如下面patch。

https://github.com/simonqin09/iMX7_M4_PWM_Driver/blob/master/board.patch


./ pin_mux.h 和pin_mux.c – 定義了除了GPIO之外的所有示例所涉及的接口功能的對應(yīng)管腳的Pin Mux配置,這里我們將PWM2的管腳配置添加進(jìn)來,如下面patch。GPIO管腳的Pin Mux配置在gpio_pins.h/gpio_pins.c 中定義。

https://github.com/simonqin09/iMX7_M4_PWM_Driver/blob/master/pin_mux.patch


c). 然后再創(chuàng)建 ”pwm_imx” 目錄,為了方便,可以復(fù)制同一目錄下的 gpio_imx目錄后進(jìn)行修改。

./ hardware_init.c – 硬件初始化,board,GPIO/PWM RDC/Clock等,代碼如下

https://github.com/simonqin09/iMX7_M4_PWM_Driver/blob/master/pwm_imx/hardware_init.c


./ main.c – 主程序文件,包含三個(gè)子程序和main主程序,三個(gè)子程序分別負(fù)責(zé)GPIO初始化,GPIO Key按鍵響應(yīng)處理以及PWM中斷Handler,main主程序完成了對GPIO和PWM初始化配置后,在每次按鍵的時(shí)候?qū)WM輸出占空比從25%-50%-75%之間循環(huán),具體代碼如下:

https://github.com/simonqin09/iMX7_M4_PWM_Driver/blob/master/pwm_imx/main.c


./ 最后修改“armgcc/CMakeLists.txt” 文件,將所有新創(chuàng)建的文件包含進(jìn)去,然后進(jìn)行編譯,具體內(nèi)容如下:

https://github.com/simonqin09/iMX7_M4_PWM_Driver/blob/master/pwm_imx/armgcc/CMakeLists.txt


./ 對iMX7 M4 FreeRTOS代碼進(jìn)行debug的方法請參考這里,本文就不再贅述。



6). Colibri iMX7 M4 PWM驅(qū)動(dòng)示例部署

a). 在部署之前,首先需要確保將本文所使用的PWM2 從iMX7 A7 核心Linux device tree中disable,以免發(fā)生資源沖突。有兩種方法如下:

./ 參考這里下載A7 Linux kernel源代碼,再參考這里修改device tree后重新編譯部署。


./ 可以直接在uboot中通過”fdt_fixup” 環(huán)境變量來臨時(shí)禁止某個(gè)外設(shè)

-----------------------------


# ubipart ubi

# ubiread ${fdt_addr_r} dtb

# fdtaddr ${fdt_addr_r}

# fdtlist


# fdtlist /soc/aips-bus@30400000/pwm@30670000


# setenvfdt_fixup ‘fdt addr ${fdt_addr_r} && fdt rm /soc/aips-bus@30800000/spba-bus@30800000/serial@30890000&& fdt rm /soc/aips-bus@30400000/pwm@30670000’

-----------------------------


b). 然后就可以參考上面的相關(guān)文檔或者之前的文章進(jìn)行加載M4 firmware運(yùn)行了

./ 程序開始運(yùn)行,如下示波器測量數(shù)據(jù)所示,PWM2輸出周期為500ms(周期來自main主函數(shù)文件里面的配置),占空比為25%,從LED等可以看到亮的時(shí)間比滅的時(shí)間較短。


./ 然后按動(dòng)載板按鍵SW6一次,PWM2 輸出周期不變,占空比會(huì)變成50%。

iMX7%20M4核心PWM驅(qū)動(dòng)開發(fā)_web.files/image002.png" height=" 170px" width=" 283px"/>


./ 再次按動(dòng)載板按鍵SW6一次,PWM2 輸出周期不變,占空比會(huì)變成75%。


./ 以后每次按鍵都會(huì)循環(huán)上述過程。



7). 總結(jié)

如上述示例,iMX7 M4 核心可以非常方便的開發(fā)外設(shè)驅(qū)動(dòng)并進(jìn)行調(diào)用,尤其是基于FreeRTOS,相對于直接配置寄存器就更直觀寫,代碼也更具備靈活性和重用性。


下一篇:

上一篇: 索爾維全系列Solef?PV

推薦產(chǎn)品

更多
美女网站一区二区_在线观看日韩毛片_成人在线视频首页_欧美精品一区二区三区久久久_国产精品亚洲一区二区三区在线_日本免费新一区视频_日本美女一区二区三区_精品亚洲成a人_久久不见久久见免费视频1_91首页免费视频_欧美一区二区在线看_91精品91久久久中77777_天堂蜜桃一区二区三区_av在线一区二区_欧美不卡一区二区_欧美影视一区二区三区


        国产精品免费免费| 欧美天堂一区二区三区| 国产suv精品一区二区三区| 蜜桃av噜噜一区| 欧美a级理论片| 国产精品一区二区免费不卡| 国产aⅴ综合色| 91蜜桃婷婷狠狠久久综合9色| 91一区二区三区在线观看| 国内一区二区三区在线视频| 日韩三级电影免费观看| 欧美亚洲另类激情小说| 91精品国产一区二区三区蜜臀 | 欧美日韩电影一区| 欧美精品1区2区3区| 欧美α欧美αv大片| 国产网站一区二区| 一区二区三区在线观看网站| 天天色 色综合| 国内成人精品2018免费看| 国产成人av电影在线观看| 91免费在线视频观看| 免费久久久一本精品久久区| 亚洲视频电影| 日韩午夜激情电影| 中文字幕日韩一区二区| 日韩黄色小视频| 国产ts人妖一区二区| 精品国产免费人成电影在线观...| 婷婷四月色综合| 51精品秘密在线观看| 国产精品网曝门| 婷婷亚洲久悠悠色悠在线播放| 韩国在线一区二区| 粉嫩av一区二区三区免费观看| 亚洲精品乱码视频| 日韩免费看网站| 成人欧美一区二区三区小说| 日本在线播放一区二区三区| av亚洲精华国产精华| 欧美精品一区二区三区四区五区| 欧美日韩在线综合| 国产精品国产成人国产三级| 麻豆高清免费国产一区| 成人在线免费观看一区| 欧美午夜寂寞影院| 中文字幕国产一区| 久久99久久久久| 精品一区二区三区视频日产| 91精品国产综合久久精品图片| 亚洲精品成人天堂一二三| 国产91在线看| 午夜欧美一区二区三区免费观看| 精品少妇一区二区三区在线播放| 亚洲小说春色综合另类电影| 91色综合久久久久婷婷| 欧美性猛交xxxx黑人交| 亚洲乱码国产乱码精品精可以看| 国产九色精品成人porny| 乱色588欧美| 日韩精品中文字幕在线不卡尤物 | 欧美久久一区二区| 亚洲摸摸操操av| 成人av电影在线网| 色综合久久久久久久久| 国产精品嫩草99a| 国产99一区视频免费 | 在线影视一区二区三区| 亚洲人成网站色在线观看| 国产91精品久久久久久久网曝门 | 成人午夜在线播放| 在线观看一区不卡| 亚洲一区在线看| 51蜜桃传媒精品一区二区| 3d成人h动漫网站入口| 肉色丝袜一区二区| 久久亚洲精品欧美| 26uuu色噜噜精品一区| 久久er99热精品一区二区| 色女孩综合网| 亚洲欧美日韩中文字幕一区二区三区| 成人毛片视频在线观看| 欧美日韩大陆一区二区| 蜜桃视频在线观看一区| 亚洲欧洲一二三| 亚洲一区影音先锋| 欧美成人一区二区在线| 国产精品视频观看| 97夜夜澡人人双人人人喊| 欧美xxx久久| 成人激情动漫在线观看| 日韩一级二级三级精品视频| 国产乱色国产精品免费视频| 欧美日韩免费观看一区二区三区 | 亚洲国产日韩av| 免费国产在线精品一区二区三区| 欧美激情综合五月色丁香| 99国产精品国产精品久久| 精品国产一区二区三区不卡| 国产成a人亚洲| 欧美一级久久久| 成人看片黄a免费看在线| 88在线观看91蜜桃国自产| 国产麻豆欧美日韩一区| 日韩一区二区三区免费观看| 高清成人免费视频| 久久综合九色欧美综合狠狠| 3d蒂法精品啪啪一区二区免费| 国产视频不卡一区| 精品免费视频123区| 亚洲欧美成aⅴ人在线观看| 欧美日韩一区二区视频在线观看 | 国产精品麻豆视频| 国内一区在线| 亚洲综合色婷婷| 中文字幕久久综合| 精品在线播放午夜| 日韩欧美黄色影院| 999日本视频| 国产精品免费aⅴ片在线观看| 久久久精品国产一区二区三区| 亚洲少妇最新在线视频| 亚洲欧洲久久| 国模套图日韩精品一区二区| 日韩片之四级片| 成人免费在线看片| 一区二区三区四区视频精品免费 | 欧美一a一片一级一片| 国产一区二区成人久久免费影院| 日韩欧美一级二级三级| 97免费资源站| 一区二区久久久久| 欧美性大战久久久久久久蜜臀 | 久久综合av免费| 欧美成ee人免费视频| 琪琪久久久久日韩精品| 欧美va亚洲va国产综合| 精品视频导航| 日本一道高清亚洲日美韩| 日韩一区二区在线免费观看| 成人国产一区二区| 亚洲国产精品一区二区www在线 | 日av在线不卡| 日韩欧美国产精品| 久久久99爱| 国产综合久久久久久久久久久久| 久久亚洲一级片| 视频二区一区| 不卡的av中国片| 夜色激情一区二区| 日韩色在线观看| 日韩高清国产精品| 高清beeg欧美| 亚洲一区二区三区免费视频| 日韩一区二区三区四区| 欧美日韩亚洲在线| 国产高清精品久久久久| 亚洲欧美视频在线观看| 91精品国产入口在线| 免费精品视频一区| 成人深夜视频在线观看| 亚洲成a人v欧美综合天堂| 精品久久久久久无| 中文精品一区二区三区| www.久久久| 久久69国产一区二区蜜臀| 亚洲欧洲美洲综合色网| 欧美蜜桃一区二区三区| 欧美激情第六页| 成人av网址在线| 蜜芽一区二区三区| 中文字幕在线免费不卡| 欧美精品第一页| 亚洲第一在线综合在线| 国产精品日韩一区二区三区| 国产麻豆精品一区二区| 亚洲国产乱码最新视频 | 自拍偷拍一区二区三区| 成人永久免费| 国产成人福利片| 日韩av二区在线播放| 中文字幕综合网| 国产亚洲婷婷免费| 在线综合视频播放| 色偷偷久久一区二区三区| 国产尤物99| 97精品国产露脸对白| 国产一区二区电影| 视频一区在线播放| 一个色在线综合| 国产精品久久久久aaaa樱花| 精品99999| 欧美一级在线视频| 欧美最新大片在线看| 污视频在线免费观看一区二区三区| 国产精品二区在线| 91免费在线观看网站| 成人av高清在线| 成人av免费在线观看| 国产精品一区不卡|