1,硬件介绍
硬件环境:jetson nano
硬件外设:ti-ads1015
连接方式:
ADS1015 | 连接 | nano |
ALERT中断引脚 | ------ | J41 Header Pin 7 |
SDA IIC数据线 | ------ | J41 Header Pin 3 |
SCL IIC时钟线 | ------ | J41 Header Pin 5 |
2,ADS1015简介
ADS1015是TI公司生产的一款AD转换芯片,采用IIC串口协议通信,4个转换通道,12位转换精度,最大转换速度为3.3kSPS,内置增益放大器,用户可以根据自己所需设置增益。
寄存器介绍
ADS101x有四个寄存器,可以使用地址指针寄存器通过I2C接口访问它们。Conversion寄存器包含最后一次转换的结果。Config寄存器用于修改ADS101x的工作模式和查询设备状态。另外两个寄存器Lo_thresh和Hi_thresh用于设置比较器函数的阈值,在ADS1013中不可用。
Conversion寄存器
Config寄存器
ADS1015的I2C连接原理如下图所示:
3,驱动修改
3.1,nano 资源路径
资源地址:https://developer.nvidia.com/embedded/linux-tegra-r3274
3.2,修改设备树
hardware\nvidia\platform\t210\porg\kernel-dts\tegra210-p3448-0002-p3449-0000-b00.dts
配置说明:通道根据具体需求选配,引脚根据实际修改,此处使用J41Pin7
i2c@7000c400 {
status = "okay";
ads1015@48 {
compatible = "ti,ads1015";
reg = <0x48>;
reset-gpio = <&gpio TEGRA_GPIO(BB, 0) GPIO_ACTIVE_LOW>;
//reset-active-low;
//reset-delays-us = <0 50000 50000>;
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
ti,gain = <1>;
ti,datarate = <4>;
//channel@0 {
// reg = <0>;
// ti,gain = <1>;
// ti,datarate = <4>;
//};
//channel@1 {
// reg = <1>;
// ti,gain = <1>;
// ti,datarate = <4>;
//};
//channel@2 {
// reg = <2>;
// ti,gain = <1>;
// ti,datarate = <4>;
//};
//channel@3 {
// reg = <3>;
// ti,gain = <1>;
// ti,datarate = <4>;
//};
};
};
3.3, 驱动添加
修改.config
CONFIG_TI_ADS1015=y
3.4,驱动编译
jetson nano 的内核编译踩了不少坑,记录一下:
步骤如下:
1.下载交叉编译工具
这里的网址来自官网,可以会更新,如果下载不了,需要去官网下载。
test@ubuntu:~$ wget http://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz
2.解压工具
可以放在其他位置,现放在home目录下:
test@ubuntu:~$ tar -xvf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz
3.下载源码
test@ubuntu:~$ wget https://developer.nvidia.com/downloads/embedded/l4t/r32_release_v7.4/sources/t210/public_sources.tbz2
4.解压源码
test@ubuntu:~$ tar -xjf public_sources.tbz2
5.进入源码目录
test@ubuntu:~$ cd Linux_for_Tegra/source/public/
6.解压kernel
/home/Linux_for_Tegra/source/public$ tar -xjf kernel_src.tbz2
7.安装工具
test@ubuntu:~$ sudo apt install build-essential bc
8.设置内核输出目录
test@ubuntu:~$ export TEGRA_KERNEL_OUT=/home/clb/Linux_for_Tegra/source/public/kernel/kernel-4.9/output
9.设置交叉编译工具的环境变量
test@ubuntu:~$ export CROSS_COMPILE=/home/test/pro/cross_compile/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
10.设置环境变量
这一步必须加
test@ubuntu:~$ export LOCALVERSION=-tegra
11.进入内核目录
test@ubuntu:~$ cd kernel/kernel-4.9/
12.新建内核输出目录
/home/test/Linux_for_Tegra/source/public/kernel/kernel-4.9$ mkdir -p $TEGRA_KERNEL_OUT
13.生成config文件
/home/test/Linux_for_Tegra/source/public/kernel/kernel-4.9$ make ARCH=arm64 O=$TEGRA_KERNEL_OUT tegra_defconfig
14.编译内核
/home/test/Linux_for_Tegra/source/public/kernel/kernel-4.9$ make ARCH=arm64 O=$TEGRA_KERNEL_OUT
内核编译完成以后会在设置的输出目录下生成Image文件TEGRA_KERNEL_OUT/arch/arm64/boot/Image以及DTB TEGRA_KERNEL_OUT/arch/arm64/boot/dts/