OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6397|回复: 13

imx6ull-mini板ecspi例程运行失败

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2021-11-2
在线时间
3 小时
发表于 2021-11-11 17:15:05 | 显示全部楼层 |阅读模式
4金钱
使用的板子为imx6ull-mini
使用的固件均为正点原子出厂固件(包括uboot、kernel、dtb、rootfs)
设备树ecspi3如下
&ecspi3 {
        fsl,spi-num-chipselects = <1>;
        cs-gpio = <&gpio1 20 GPIO_ACTIVE_LOW>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_ecspi3>;
        status = "okay";

        spidev: icm20608@0 {
        compatible = "alientek,icm20608";
        spi-max-frequency = <8000000>;
        reg = <0>;
    };
};


&iomuxc {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_hog_1>;
        imx6ul-evk {

                   inctrl_ecspi3: ecspi3grp {
                        fsl,pins = <
                                MX6UL_PAD_UART2_RTS_B__ECSPI3_MISO        0x100b1  /* MISO*/
                                MX6UL_PAD_UART2_CTS_B__ECSPI3_MOSI        0x100b1  /* MOSI*/
                                MX6UL_PAD_UART2_RX_DATA__ECSPI3_SCLK      0x100b1  /* CLK*/
                                MX6UL_PAD_UART2_TX_DATA__GPIO1_IO20       0x100b0  /* CS*/
                        >;
                  };

         };
};


例程为正点原子提供的icm20608程序
开发板上电后
root@ATK-IMX6U:~# ls /dev
apm_bios         loop-control        pps0        snd     tty31  tty59
autofs           mem                 pps1        stderr  tty32  tty6
block            memory_bandwidth    ptmx        stdin   tty33  tty60
bus              mmcblk0             ptp0        stdout  tty34  tty61
char             mmcblk0p1           ptp1        tty     tty35  tty62
console          mmcblk0p2           pts         tty0    tty36  tty63
cpu_dma_latency  mtab                pxp_device  tty1    tty37  tty7
disk             mtd0                ram0        tty10   tty38  tty8
dri              mtd0ro              ram1        tty11   tty39  tty9
fb               mtd1                ram10       tty12   tty4   ttymxc0
fb0              mtd1ro              ram11       tty13   tty40  ttymxc2
fd               mtd2                ram12       tty14   tty41  ubi0
full             mtd2ro              ram13       tty15   tty42  ubi0_0
fuse             mtd3                ram14       tty16   tty43  ubi_ctrl
hwrng            mtd3ro              ram15       tty17   tty44  udev_network_queue
i2c-0            mtd4                ram2        tty18   tty45  urandom
i2c-1            mtd4ro              ram3        tty19   tty46  v4l
icm20608         mtd5                ram4        tty2    tty47  vcs
initctl          mtd5ro              ram5        tty20   tty48  vcs1
input            mtdblock0           ram6        tty21   tty49  vcs2
kmsg             mtdblock1           ram7        tty22   tty5   vcsa
log              mtdblock2           ram8        tty23   tty50  vcsa1
loop0            mtdblock3           ram9        tty24   tty51  vcsa2
loop1            mtdblock4           random      tty25   tty52  video0
loop2            mtdblock5           rfkill      tty26   tty53  video1
loop3            mxc_asrc            rtc         tty27   tty54  watchdog
loop4            network_latency     rtc0        tty28   tty55  watchdog0
loop5            network_throughput  sda         tty29   tty56  xconsole
loop6            null                sda1        tty3    tty57  zero
loop7            ppp                 shm         tty30   tty58


root@ATK-IMX6U:~# lsmod
Module                  Size  Used by
icm20608                4019  0
mx6s_capture           14940  0
ov5640_camera          23934  0


例程使用正点原子提供的toolchain交叉编译
root@ATK-IMX6U:~# file icm20608APP
spitest: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32, BuildID[sha1]=fb468c3b198f5f8fa426695b9bb3a4d06c2ee473, not stripped


运行例程
root@ATK-IMX6U:~# ./icm20608APP /dev/icm20608

原始值:
gx = 0, gy = 0, gz = 0
ax = 0, ay = 0, az = 0
temp = 0
实际值:act gx = 0.00°/S, act gy = 0.00°/S, act gz = 0.00°/S
act ax = 0.00g, act ay = 0.00g, act az = 0.00g
act temp = 24.92°C

原始值:
gx = 0, gy = 0, gz = 0
ax = 0, ay = 0, az = 0
temp = 0
实际值:act gx = 0.00°/S, act gy = 0.00°/S, act gz = 0.00°/S
act ax = 0.00g, act ay = 0.00g, act az = 0.00g
act temp = 24.92°C


使用示波器测试管脚电平
CLK为稳定的3.3V
CS为稳定的0V
MOSI为稳定的3.3V
MISO为稳定的3.3V

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

881

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4199
金钱
4199
注册时间
2019-9-4
在线时间
881 小时
发表于 2021-11-12 10:52:01 | 显示全部楼层
回复

使用道具 举报

9

主题

767

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5274
金钱
5274
注册时间
2019-9-25
在线时间
433 小时
发表于 2021-11-13 11:14:36 | 显示全部楼层
mini板是没有icm20608器件的。这是在测试电平吗?
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2021-11-2
在线时间
3 小时
 楼主| 发表于 2021-11-15 08:43:53 | 显示全部楼层
茂茂2019 发表于 2021-11-13 11:14
mini板是没有icm20608器件的。这是在测试电平吗?

试过自己设计的大板子不行,所以拿官方mini版烧出厂固件进行测试的,但是引脚电平感觉不太对,CLK一直是高电平
回复

使用道具 举报

4

主题

6

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2020-6-2
在线时间
13 小时
发表于 2021-12-12 02:14:09 | 显示全部楼层
用阿尔法开发板也是这样的问题,用例程驱动加载后"WHO AM I"的id显示是0,无法读取相关寄存器的数据.
但用正点原子原厂的驱动和app进行测试是OK的,说明硬件没有问题,不知道是例程哪里有问题?
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2021-12-8
在线时间
5 小时
发表于 2022-2-27 21:14:17 | 显示全部楼层
chenlvqing 发表于 2021-12-12 02:14
用阿尔法开发板也是这样的问题,用例程驱动加载后"WHO AM I"的id显示是0,无法读取相关寄存器的数据.
但用 ...

我的也是,跟着视频做读出ID一直是0,用例程也是0
回复

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2019-5-30
在线时间
29 小时
发表于 2022-8-2 22:33:51 | 显示全部楼层
15926 发表于 2022-2-27 21:14
我的也是,跟着视频做读出ID一直是0,用例程也是0

我的也是,一直找不出问题。请问你找到问题了嘛?
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2022-5-20
在线时间
11 小时
发表于 2022-8-5 13:32:21 | 显示全部楼层
应该是设备树种MX6UL_PAD_UART2管脚冲突了吧,检查一下设备树,把跟icm20608使用一样管脚的地方注释掉就好了,例如下面这个
  1.                 pinctrl_flexcan2: flexcan2grp{
  2.                         fsl,pins = <
  3.                                 /*MX6UL_PAD_UART2_RTS_B__FLEXCAN2_RX        0x1b020
  4.                                 MX6UL_PAD_UART2_CTS_B__FLEXCAN2_TX        0x1b020*/ /*for spi icm20608*/
  5.                         >;
  6.                 };
复制代码
回复

使用道具 举报

0

主题

12

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2022-8-20
在线时间
6 小时
发表于 2022-12-13 01:52:21 | 显示全部楼层
chenlvqing 发表于 2021-12-12 02:14
用阿尔法开发板也是这样的问题,用例程驱动加载后"WHO AM I"的id显示是0,无法读取相关寄存器的数据.
但用 ...

嗯,也这么排查过。确定硬件是好的,用他单独的例程确实也测不过
回复

使用道具 举报

0

主题

12

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2022-8-20
在线时间
6 小时
发表于 2022-12-13 01:58:55 | 显示全部楼层
chenlvqing 发表于 2021-12-12 02:14
用阿尔法开发板也是这样的问题,用例程驱动加载后"WHO AM I"的id显示是0,无法读取相关寄存器的数据.
但用 ...

我找到问题了。在设备树下面,节点添加错地方了,pinctr部分没有添加到&iomuxc { ……}下面了。正常应该添加到板卡下面imx6ul-evk {……}
回复

使用道具 举报

0

主题

12

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2022-8-20
在线时间
6 小时
发表于 2022-12-13 02:02:23 | 显示全部楼层
我找到问题了,这个问题找了快两天……在设备树下面,节点添加错地方了,设备树pinctr部分错误添加到了&iomuxc { ……}下。正常应该添加到板卡下面imx6ul-evk {……}。
&iomuxc {
  imx6ull-evk{
    pinctrl_ecspi3: icm20608{
    ……
    };
  };
};
回复

使用道具 举报

0

主题

12

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2022-8-20
在线时间
6 小时
发表于 2022-12-13 02:02:49 | 显示全部楼层
chenlvqing 发表于 2021-12-12 02:14
用阿尔法开发板也是这样的问题,用例程驱动加载后"WHO AM I"的id显示是0,无法读取相关寄存器的数据.
但用 ...

我找到问题了,这个问题找了快两天……在设备树下面,节点添加错地方了,设备树pinctr部分错误添加到了&iomuxc { ……}下。正常应该添加到板卡下面imx6ul-evk {……}。
&iomuxc {
  imx6ull-evk{
    pinctrl_ecspi3: icm20608{
    ……
    };
  };
};
回复

使用道具 举报

0

主题

12

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2022-8-20
在线时间
6 小时
发表于 2022-12-13 02:03:17 | 显示全部楼层
烟花易冷11 发表于 2022-8-2 22:33
我的也是,一直找不出问题。请问你找到问题了嘛?

我找到问题了,这个问题找了快两天……在设备树下面,节点添加错地方了,设备树pinctr部分错误添加到了&iomuxc { ……}下。正常应该添加到板卡下面imx6ul-evk {……}。
&iomuxc {
  imx6ull-evk{
    pinctrl_ecspi3: icm20608{
    ……
    };
  };
};
回复

使用道具 举报

0

主题

12

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2022-8-20
在线时间
6 小时
发表于 2022-12-13 02:04:42 | 显示全部楼层
15926 发表于 2022-2-27 21:14
我的也是,跟着视频做读出ID一直是0,用例程也是0

我找到问题了,这个问题找了快两天……在设备树下面,节点添加错地方了,设备树pinctr部分错误添加到了&iomuxc { ……}下。正常应该添加到板卡下面imx6ul-evk {……}。
&iomuxc {
  imx6ull-evk{
    pinctrl_ecspi3: icm20608{
    ……
    };
  };
};
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 07:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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