使用TIMER計算外部脈沖個(gè)數方法

發(fā)布時(shí)間:2019-7-25 16:30    發(fā)布者:Tronlong818
1        前言
本例程介紹使用TIMER的寄存器實(shí)現最基本的定時(shí)功能,輸入捕獲,輸入捕獲模式可以用來(lái)測量脈沖寬度或者測量頻率。AM335x開(kāi)發(fā)板有8個(gè)32位通用定時(shí)器,DMTIMER1是用于操作系統(OS)毫秒定時(shí)器,用于操作系統時(shí)鐘,DMTIMER4-DMTIMER7作為輸出引腳。
1
例程源碼位于光盤(pán)資料”Demo\pps-dmtimer\src”。
本次編譯生成的設備樹(shù)文件以及pps-dmtimer.ko驅動(dòng)模塊和腳本文件gpio.sh位于光盤(pán)資料”Demo\pps-dmtimer\bin”下。
1 編譯pps-dmtimer.ko驅動(dòng)模塊2.1        修改Makefile文件
工程源碼位于光盤(pán)”Demo\pps-dmtimer\src”下,將pps-dmtimer工程源碼拷貝Ubuntu任意目錄。進(jìn)入pps-dmtimer工程源碼目錄,修改Makefile配置文件。
Host#                vi Makefile
2
KDIR修改為kernel源碼所在目錄(kernel必須已經(jīng)編譯過(guò),如果沒(méi)編譯,可以參照用戶(hù)手冊Linux內核編譯方法》來(lái)編譯內核)。
3
2.2        修改pps-gmtimer.c文件
pps-gmtimer.c文件添加頭文件#include "dmtimer.h"。
Host#                vi pps-gmtimer.c
4
5
如下圖,timespec修改為timespec64,修改完成后保存退出。
6
內核源碼下的”arch/arm/plat-omap/include/plat/dmtimer.h”文件拷貝到pps-dmtimer工程源碼根目錄。
Host#                cp /home/tronlong/AM335x/kernel/Linux-4.4.12/arch/arm/plat-omap/include/plat/dmtimer.h ./
7
2.3        編譯pps-dmtimer.ko驅動(dòng)
執行如下指令進(jìn)行編譯,編譯完成后在源碼根目錄下生成pps-dmtimer.ko驅動(dòng)模塊
Host#                cp /home/tronlong/AM335x/kernel/Linux-4.4.12/arch/arm/plat-omap/include/plat/dmtimer.h ./
8
生成的pps-dmtimer.ko拷貝SD系統啟動(dòng)卡的boot分區。
3        修改設備樹(shù)
(1) 修改內核源碼下的設備樹(shù)文件am335x-icev2.dts,添加以下Timer4節點(diǎn)。
Host#                vi arch/arm/boot/dts/am335x-icev2.dts
9
添加節點(diǎn)
&pps_gmtimer {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&gps_pps_pins>;
};
10
添加PINMUX,開(kāi)發(fā)板上的”GPIO/eHRPWM/eQEP/I2C”接口引出GPMC_ADVN_ALE配置TIMER4功能(GPMC_ADVN_ALETIMER4復用),將開(kāi)發(fā)板引出的XDMA_EVENT_INTR1配置為TCLKIN,接口以及詳細配置請查閱光盤(pán)資料”Datasheet\核心板芯片\CPU的數據手冊以及開(kāi)發(fā)板底板原理圖。配置如下
gps_pps_pins: gps_pps_pins {
                pinctrl-single,pins = <
                        AM33XX_IOPAD(0x9b4, PIN_INPUT | MUX_MODE2)   //TCLKIN
                        AM33XX_IOPAD(0x890, PIN_INPUT | MUX_MODE2)   //TIMER4
              >;
};
11
(2) 修改內核源碼下設備樹(shù)文件am33xx.dtsi。
Host#                vi arch/arm/boot/dts/am33xx.dtsi
12
增加Timer4結點(diǎn)
pps_gmtimer:pps_gmtimer {
               compatible = "pps-gmtimer";
                timer = <&timer4>;
                 use-tclkin = <1>;
                 status = "okay";
                 };
13
(3) 修改am335x-icev2.dts文件,加入PINMUX。
Host#                vi arch/arm/boot/dts/am335x-icev2.dts
14
將開(kāi)發(fā)板上的”GPIO/eHRPWM/eQEP/I2C”接口引出IO作為脈沖輸出,這里是選取GPIO1[15]作為外部脈沖輸出。
gpio_pins: gpio_pins {
                pinctrl-single,pins = <
                        AM33XX_IOPAD(0x83c, PIN_OUTPUT | MUX_MODE7) /* (U13) GPIO1[15] */
                >;
        };
15
gpio_keys節點(diǎn)下加上PINMUX的說(shuō)明。
pinctrl-0 = <&user_keys_default>;
修改pinctrl-0 = <&user_keys_default &gpio_pins>;
16
如果eMMC核心板,按照如上修改完成后保存退出,編譯設備樹(shù),將編譯生成的設備樹(shù)拷貝到SD系統啟動(dòng)卡的”rootfs/boot”目錄。
如果是NAND FLASH核心板,除了做如上修改,還需要修改am335x-icev2-nand.dts文件,因為am335x-icev2-nand.dts中已經(jīng)GPMC_ADVN_ALE配置為gpmc_advn_ale功能,將配置注釋,如下圖。
17
修改完成后,保存退出,編譯生成am335x-icev2-nand.dtb文件,將am335x-icev2-nand.dtb命名為am335x-icev2.dtb拷貝至SD系統啟動(dòng)卡的”rootfs/boot”目錄。

本文地址:http://selenalain.com/thread-566375-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
Tronlong818 發(fā)表于 2019-7-25 16:31:31
更多幫助
銷(xiāo)售郵箱:sales@tronlong.com       
技術(shù)郵箱:support@tronlong.com
創(chuàng )龍總機:020-8998-6280
技術(shù)熱線(xiàn):020-3893-9734
創(chuàng )龍官網(wǎng):www.tronlong.com
技術(shù)論壇:www.51ele.net
線(xiàn)上商城:https://tronlong.taobao.com
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页