一、问题描述
最近在使用飞思卡尔的imx6ull的时候,要用spi协议实现和icm20608六轴传感器的通讯时,发现读取出来的数据都是0(即使读取的是ID寄存器)。
二、解决方法
1、上论坛查找问题,发现首先是忘记屏蔽掉设备树中冲突的引脚配置
pinctrl_ecspi3:icm20608{
fsl,pins=<
/* MX6UL_PAD_UART2_TX_DATA__ECSPI3_SS0*/
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 = <
/* MX6UL_PAD_UART2_RTS_B__FLEXCAN2_RX 0x1b020*/
/* MX6UL_PAD_UART2_CTS_B__FLEXCAN2_TX 0x1b020*/
>;
};
pinctrl_uart2: uart2grp {
fsl,pins = <
/* MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX 0x1b0b1
MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX 0x1b0b1*/