栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

linux使用spi读取传感器数值一直显示0

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

linux使用spi读取传感器数值一直显示0

一、问题描述

        最近在使用飞思卡尔的imx6ull的时候,要用spi协议实现和icm20608六轴传感器的通讯时,发现读取出来的数据都是0(即使读取的是ID寄存器)。

二、解决方法 1、上论坛查找问题,发现首先是忘记屏蔽掉设备树中冲突的引脚配置
pinctrl_ecspi3:icm20608{
			fsl,pins=<
			
				MX6UL_PAD_UART2_TX_DATA__GPIO1_IO20			0x10b0
				MX6UL_PAD_UART2_RX_DATA__ECSPI3_SCLK		0x10b1
				MX6UL_PAD_UART2_CTS_B__ECSPI3_MOSI			0x10b1
				MX6UL_PAD_UART2_RTS_B__ECSPI3_MISO			0x10b1
			>;

     可以看到,icm20608配置了uart2相关的四个引脚,在设备树文件中搜索使用uart2引脚的配置,然后屏蔽掉。

pinctrl_flexcan2: flexcan2grp{
			fsl,pins = <
				
				
			>;
		};


pinctrl_uart2: uart2grp {
			fsl,pins = <
				
				   MX6UL_PAD_UART3_RX_DATA__UART2_DCE_RTS	0x1b0b1
					 MX6UL_PAD_UART3_TX_DATA__UART2_DCE_CTS	0x1b0b1
			>;
		};

		pinctrl_uart2dte: uart2dtegrp {
			fsl,pins = <
				
			>;
		};
2、发现问题还没有解决,输出依然是0

        移植正点原子出厂的设备树文件,发现是可以正常读取的,于是将官方的设备树文件和自己的进行对比,发现描述引脚的fsl被我误写成fls

pinctrl_ecspi3:icm20608{
			fsl,pins=<
			
				MX6UL_PAD_UART2_TX_DATA__GPIO1_IO20			0x10b0
				MX6UL_PAD_UART2_RX_DATA__ECSPI3_SCLK		0x10b1
				MX6UL_PAD_UART2_CTS_B__ECSPI3_MOSI			0x10b1
				MX6UL_PAD_UART2_RTS_B__ECSPI3_MISO			0x10b1
			>;
		};

改正之后就可以正常读取了。

三、复习

        关于这里 fsl,pin的作用:

对于 I.MX 系列 SOC 而言,pinctrl 驱动程序是通过读取“fsl,pins”属性值来获取 PIN 的配置信息,所以这个属性名称必须完全遵循规则,否则pinctrl系统无法找到引脚信息,无法完成配置。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/298292.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号