前言
本笔记基于运行linux操作系统的SOC芯片平台、linux内核版本linux5.10.xxx和无操作系统的mcu平台记录调试;
一、依赖文档、工具
文档名 | 说明 | 获取方式 |
---|---|---|
hmc7044.pdf | 数据手册 | adi官网或者国内采芯网 |
GUI配置工具 | 通过在界面进行操作可以导出寄存器和寄存器值配置对文档用于代码中进行配置参考 | adi官网 |
二、运行linux内核驱动的平台
1、代码、文件列表
文件名 | 说明 | 获取链接 |
---|---|---|
hmc7044.c | 驱动文件 | https://github.com/analogdevicesinc/linux/blob/master/drivers/iio/frequency/hmc7044.c |
hmc7044.h | 驱动头文件 | https://github.com/analogdevicesinc/linux/blob/master/include/dt-bindings/iio/frequency/hmc7044.h |
hmc7044.txt | 设备树属性配置说明文档,可以和GUI中的配置项说明配合理解 | https://github.com/analogdevicesinc/linux/blob/master/Documentation/devicetree/bindings/iio/frequency/hmc7044.txt |
2、适配、编译
1.将hmc7044.c 添加到自己的linux版本sdk的drivers/iio/frequency/目录下;
2.将hmc7044.h 添加到自己的linux版本sdk的include/dt-bindings/iio/frequency/目录下;
3.修改linux内核代码的配置文件添加CONFIG_HMC7044=m,这里配置为生成内核模块的方式;
4.修改hmc7044.c同级目录下的Kconfig文件添加如下内容:
config HMC7044
tristate “Analog Devices HMC7044, HMC7043 Clock Jitter Attenuator with JESD204B”
depends on SPI
depends on COMMON_CLK
help
Say yes here to build support for Analog Devices HMC7044, HMC7043
Clock Jitter Attenuator with JESD204B.
The driver provides direct access via sysfs.
To compile this driver as a module, choose M here: the
module will be called hmc7044.
5.修改hmc7044.c 同级目录下的Makefile文件增加如下内容:
obj-$(CONFIG_HMC7044) += hmc7044.o
6.修改设备树文件,配置spi使用的pin脚,hmc7044使用的是三线spi,这里我配置成了普通的gpio,在hmc7044中使用io模拟spi三线的的方式读写hmc7044:
&引脚配置控制器{
片选 {
};
时钟 {
};
数据线 {
};
};
7.修改设备树文件,spi节点下增加hmc7044子节点和配置,配置为参考配置具体以实际设计需求为准:
&spiXXX
{
pinctrl-0 = <引用片选>,<引用时钟>,<引用数据线>;
hmc7044: hmc7044@0 {
compatible = "adi,hmc7044";
reg = <0>;
spi-max-frequency = <10000000>;
adi,pll1-clkin-frequencies = <122880000 0 0 0>;
adi,pll1-loop-bandwidth = <200>;
//gpio属性定义
spics = <引用引脚>;
spiclk = <引用引脚>;
spidata = <引用引脚>;
adi