发 帖  
原厂入驻New
发烧友10周年庆典,全网超值优惠来袭!千元现金券,下单抽奖赶紧参与》》

[经验] 【案例分享】使用TIMER的寄存器实现脉冲数量计算

2019-8-4 04:00:00  307 Timer 寄存器 脉冲
分享
2
本例程介绍使用tiMER的寄存器实现最基本的定时功能,输入捕获,输入捕获模式可以用来测量脉冲宽度或者测量频率。AM335x开发板有8个32位通用定时器,DMTIMER1是用于操作系统(OS)毫秒定时器,用于操作系统时钟,DMTIMER4-DMTIMER7作为输出引脚。

<span]

图]例程源码位于光盘资料”Demo\pps-dmtimer\src”下。
本次编译生成的设备树文件以及pps-dmtimer.ko驱动模块和脚本文件gpio.sh位于光盘资料”Demo\pps-dmtimer\bin”下。
1]工程源码位于光盘”Demo\pps-dmtimer\src”下,将pps-dmtimer工程源码拷贝到Ubuntu任意目录下。进入pps-dmtimer工程源码目录,修改Makefile配置文件。
Host#]

图]将KDIR修改为kernel源码所在目录(kernel必须已经编译过,如果没编译,可以参照用户手册下《Linux内核编译方法》来编译内核)。


<span]图 3

2.2       修改pps-gmtimer.c文件
在pps-gmtimer.c文件中添加头文件:#include]Host#                vi pps-gmtimer.c


<span]图 4


<span]图 5

如下图,将timespec修改为timespec64,修改完成后保存退出。

<span]

图]将内核源码下的”arch/ARM/plat-omap/include/plat/dmtimer.h”文件拷贝到pps-dmtimer工程源码根目录下。
Host#]

图]执行如下指令进行编译,编译完成后在源码根目录下生成pps-dmtimer.ko驱动模块:
Host#]

图]将生成的pps-dmtimer.ko拷贝到SD系统启动卡的boot分区。
3       修改设备树
(1)]Host#                vi arch/arm/boot/dts/am335x-icev2.dts


<span]图 9

添加节点:
<span]&pps_gmtimer {
]        pinctrl-names = "default";
]};


<span]图 10

添加PINMUX,将开发板上的”GPIO/eHRPWM/eQEP/I2C”接口引出的GPMC_ADVN_ALE配置为TIMER4功能(GPMC_ADVN_ALE和TIMER4复用),将开发板引出的XDMA_EVENT_INTR1口配置为TCLKIN,接口以及详细配置请查阅光盘资料”Datasheet\核心板芯片\CPU”下的数据手册以及开发板底板原理图。配置如下:
<span]gps_pps_pins: gps_pps_pins {
]                        AM33XX_IOPAD(0x9b4, PIN_INPUT | MUX_MODE2)   //TCLKIN
]              >;
};

<span]

图](2) 修改内核源码下设备树文件am33xx.dtsi。
Host#]

图]增加Timer4结点:
pps_gmtimer:pps_gmtimer]               compatible = "pps-gmtimer";
]                 use-tclkin = <1>;
]                 };


<span]图 13

(3)]Host#                vi arch/arm/boot/dts/am335x-icev2.dts


<span]图 14

将开发板上的”GPIO/eHRPWM/eQEP/I2C”接口引出的IO口作为脉冲输出,这里是选取GPIO1[15]作为外部脉冲输出。
<span]gpio_pins: gpio_pins {
]                        AM33XX_IOPAD(0x83c, PIN_OUTPUT | MUX_MODE7) /* (U13) GPIO1[15] */
]        };


<span]图 15

在gpio_keys节点下加上PINMUX的说明。
<span]将pinctrl-0 = <&user_keys_default>;
修改为pinctrl-0]

图]如果是eMMC的核心板,按照如上修改完成后保存退出,编译设备树,将编译生成的设备树拷贝到SD系统启动卡的”rootfs/boot”目录。
如果是NAND]

图]修改完成后,保存退出,编译生成am335x-icev2-nand.dtb文件,将am335x-icev2-nand.dtb重命名为am335x-icev2.dtb并拷贝至SD系统启动卡的”rootfs/boot”目录。


王栋春 2019-8-4 21:57:19
学习借鉴一下
回复

举报

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

发经验
课程
    关闭

    站长推荐 上一条 /10 下一条

    快速回复 返回顶部 返回列表