OpenEdv-开源电子网

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

SPI实验 读取到icm20608数据都为0

[复制链接]

1

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2019-9-28
在线时间
40 小时
发表于 2020-4-29 10:28:43 | 显示全部楼层 |阅读模式
10金钱
我使用  4、NXP官方原版Uboot和Linux  中的linux源码自己修改后编译,按照六十二章 Linux SPI 驱动实验中配置设备树,接收到ICM20608的数据都是0;
(我也试过直接把1、例程源码中11、开发板教程对应的uboot和linux源码 中的设备树代码copy过来,也是一样 )。
但是使用正点原子1、例程源码11、开发板教程对应的uboot和linux源码  中的linux编译以后可以正常读取数据。

批注 2020-04-29 095208.png

最佳答案

查看完整内容[请看2#楼]

用开发板教程对应的设备树以及开发板光盘里面的驱动源码测试。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2020-4-29 10:28:44 | 显示全部楼层
用开发板教程对应的设备树以及开发板光盘里面的驱动源码测试。
回复

使用道具 举报

1

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2019-9-28
在线时间
40 小时
 楼主| 发表于 2020-4-29 12:50:38 | 显示全部楼层
嗯,谢谢。使用阿尔法Linux开发板(D盘)-第3期 系统移植和跟文件系统构建篇中linux源码编译后可以读出数据了。
回复

使用道具 举报

36

主题

245

帖子

0

精华

高级会员

Rank: 4

积分
771
金钱
771
注册时间
2016-9-10
在线时间
305 小时
发表于 2020-4-30 11:49:47 | 显示全部楼层
同样的问题,读出数据全是0,用的是文档里面A盘1、例程源码->4、 NXP 官方原版 Uboot 和 Linux->linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2编译出的设备树和内核
回复

使用道具 举报

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2016-7-19
在线时间
31 小时
发表于 2020-5-23 18:17:12 | 显示全部楼层
楼主最终确定是哪里问题了吗?我的ICM20608 ID读出来是0,
/lib/modules/4.1.15 # modprobe icm20608.ko
icm20608 devices and driver mathced
ICM20608 ID = 0X0
/lib/modules/4.1.15 #
回复

使用道具 举报

9

主题

767

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5274
金钱
5274
注册时间
2019-9-25
在线时间
433 小时
发表于 2020-5-23 18:50:40 | 显示全部楼层
xielizyh 发表于 2020-5-23 18:17
楼主最终确定是哪里问题了吗?我的ICM20608 ID读出来是0,
/lib/modules/4.1.15 # modprobe icm20608.ko
...

不要用nxp没修改过的源码来做,用教程的源码,因为在设备树里有些io是被复用了的啊。你可以搜索UART2开头的pinmux,在spi之外的ioUART2都 注释掉
想思考的时候,有时还可以用屁股,QQ 1252699831
回复

使用道具 举报

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2016-7-19
在线时间
31 小时
发表于 2020-5-24 09:02:18 | 显示全部楼层
茂茂2019 发表于 2020-5-23 18:50
不要用nxp没修改过的源码来做,用教程的源码,因为在设备树里有些io是被复用了的啊。你可以搜索UART2开头 ...

对的,刚试了一下,屏蔽了UART2被其他外设使用就好了,谢谢。
  1. pinctrl_flexcan2: flexcan2grp{
  2.                         fsl,pins = <
  3.                         /* xli
  4.                                 MX6UL_PAD_UART2_RTS_B__FLEXCAN2_RX        0x1b020
  5.                                 MX6UL_PAD_UART2_CTS_B__FLEXCAN2_TX        0x1b020
  6.                         */
  7.                         >;
  8.                 };

  9.                 pinctrl_uart2: uart2grp {
  10.                         fsl,pins = <
  11.                         /* xli
  12.                                 MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX        0x1b0b1
  13.                                 MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX        0x1b0b1
  14.                         */
  15.                                 MX6UL_PAD_UART3_RX_DATA__UART2_DCE_RTS        0x1b0b1
  16.                                 MX6UL_PAD_UART3_TX_DATA__UART2_DCE_CTS        0x1b0b1
  17.                         >;
  18.                 };

  19.                 pinctrl_uart2dte: uart2dtegrp {
  20.                         fsl,pins = <
  21.                         /* xli
  22.                                 MX6UL_PAD_UART2_TX_DATA__UART2_DTE_RX        0x1b0b1
  23.                                 MX6UL_PAD_UART2_RX_DATA__UART2_DTE_TX        0x1b0b1
  24.                         */
  25.                                 MX6UL_PAD_UART3_RX_DATA__UART2_DTE_CTS        0x1b0b1
  26.                                 MX6UL_PAD_UART3_TX_DATA__UART2_DTE_RTS        0x1b0b1
  27.                         >;
  28.                 };
复制代码
回复

使用道具 举报

3

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
261
金钱
261
注册时间
2015-8-28
在线时间
76 小时
发表于 2020-6-24 10:55:05 | 显示全部楼层
xielizyh 发表于 2020-5-24 09:02
对的,刚试了一下,屏蔽了UART2被其他外设使用就好了,谢谢。

正解!!忘记屏蔽其他外设使用UART2了,所以会读取不到。赞!
回复

使用道具 举报

17

主题

237

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1312
金钱
1312
注册时间
2017-3-1
在线时间
259 小时
发表于 2020-7-7 22:15:05 | 显示全部楼层
xielizyh 发表于 2020-5-24 09:02
对的,刚试了一下,屏蔽了UART2被其他外设使用就好了,谢谢。

为啥我屏蔽后没有用得到的还是ID为0(原子的驱动也测试了不行),但设备树实在找不到要修改的地方了
回复

使用道具 举报

17

主题

237

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1312
金钱
1312
注册时间
2017-3-1
在线时间
259 小时
发表于 2020-7-8 22:22:59 | 显示全部楼层
茂茂2019 发表于 2020-5-23 18:50
不要用nxp没修改过的源码来做,用教程的源码,因为在设备树里有些io是被复用了的啊。你可以搜索UART2开头 ...

跟着教程一步步做的(uboot kernel),设备树中关于含有UART2的其它字符全都注释,但还是不行 ID读出来为0,还有没有其它的查找办法?
回复

使用道具 举报

3

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
246
金钱
246
注册时间
2013-10-18
在线时间
30 小时
发表于 2020-7-12 12:47:56 | 显示全部楼层
NewGuard 发表于 2020-7-8 22:22
跟着教程一步步做的(uboot kernel),设备树中关于含有UART2的其它字符全都注释,但还是不行 ID读出来为 ...

你的修改好了? 我的也是这情况
回复

使用道具 举报

3

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
246
金钱
246
注册时间
2013-10-18
在线时间
30 小时
发表于 2020-7-12 12:48:54 | 显示全部楼层
Brian0502 发表于 2020-6-24 10:55
正解!!忘记屏蔽其他外设使用UART2了,所以会读取不到。赞!

能找的已经全屏蔽了,代码都检查好几遍了
回复

使用道具 举报

3

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
246
金钱
246
注册时间
2013-10-18
在线时间
30 小时
发表于 2020-7-12 23:19:50 | 显示全部楼层
就没有跟我一样。用的正点源码,屏蔽了帖子中提到的地方,驱动代码,应用代码检查了好几遍 真不知道还需要弄那个地方了
回复

使用道具 举报

3

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
246
金钱
246
注册时间
2013-10-18
在线时间
30 小时
发表于 2020-7-12 23:25:48 | 显示全部楼层
看着别人一个个都弄出来。急得的我口腔溃疡都犯了但是又无能为力
回复

使用道具 举报

17

主题

237

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1312
金钱
1312
注册时间
2017-3-1
在线时间
259 小时
发表于 2020-7-13 08:57:44 | 显示全部楼层
Gold_Br 发表于 2020-7-12 12:47
你的修改好了? 我的也是这情况

没有,我现在准备把原子的内核再移植一遍,试试效果。
回复

使用道具 举报

17

主题

237

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1312
金钱
1312
注册时间
2017-3-1
在线时间
259 小时
发表于 2020-7-13 13:56:34 | 显示全部楼层
Gold_Br 发表于 2020-7-12 23:25
看着别人一个个都弄出来。急得的我口腔溃疡都犯了但是又无能为力

别上火,慢慢找问题,只能这样做了,你整出来也跟咱讲下
回复

使用道具 举报

17

主题

237

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1312
金钱
1312
注册时间
2017-3-1
在线时间
259 小时
发表于 2020-7-14 22:44:00 | 显示全部楼层
Gold_Br 发表于 2020-7-12 23:25
看着别人一个个都弄出来。急得的我口腔溃疡都犯了但是又无能为力

跟你分享下近况,我用原子的设备树文件替换当前的设备树文件,编译后的dtb文件可以用,但还没找到为啥自己的设备树不能用。。。。我比较了两个设备树源文件,即使替换掉自己关于spi章节设备的描述,编译后还是读不到设备地址,所以懵逼中。。。。。。。。。。
回复

使用道具 举报

17

主题

237

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1312
金钱
1312
注册时间
2017-3-1
在线时间
259 小时
发表于 2020-7-16 21:58:00 | 显示全部楼层
NewGuard 发表于 2020-7-14 22:44
跟你分享下近况,我用原子的设备树文件替换当前的设备树文件,编译后的dtb文件可以用,但还没找到为啥自 ...

花了这么久的时间总算解决了,之前上面说把UART2相关的屏蔽也是对的,我试了好久,发现把节点uart2状态改为disabled即可解决问题

clipboard.png
回复

使用道具 举报

3

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
246
金钱
246
注册时间
2013-10-18
在线时间
30 小时
发表于 2020-7-19 23:00:39 | 显示全部楼层
NewGuard 发表于 2020-7-16 21:58
花了这么久的时间总算解决了,之前上面说把UART2相关的屏蔽也是对的,我试了好久,发现把节点uart2状态改 ...

出来数值才算。你这显示只是设备注册成功了。我感觉还是那个地方有用到引脚冲突了。状态设成disable还是不行。
回复

使用道具 举报

3

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
246
金钱
246
注册时间
2013-10-18
在线时间
30 小时
发表于 2020-7-19 23:17:45 | 显示全部楼层
NewGuard 发表于 2020-7-16 21:58
花了这么久的时间总算解决了,之前上面说把UART2相关的屏蔽也是对的,我试了好久,发现把节点uart2状态改 ...

我觉得根本问题没找到, 应该是 disable 你却用了disabled居然能用。
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2017-9-13
在线时间
6 小时
发表于 2020-8-9 22:10:18 | 显示全部楼层
Gold_Br 发表于 2020-7-19 23:17
我觉得根本问题没找到, 应该是 disable 你却用了disabled居然能用。

我现在也遇到了这个问题,请问大佬解决了吗?我纠结了快一天了
回复

使用道具 举报

3

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
246
金钱
246
注册时间
2013-10-18
在线时间
30 小时
发表于 2020-8-11 10:44:04 | 显示全部楼层
Sea789 发表于 2020-8-9 22:10
我现在也遇到了这个问题,请问大佬解决了吗?我纠结了快一天了

没有。先放放,实在找不到哪里的问题。只知道是引脚冲突
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2020-5-25
在线时间
3 小时
发表于 2020-9-29 23:34:52 | 显示全部楼层
感谢感谢,确实是引脚冲突,把自己那份设备树里所有跟USART2有关的pinctrl和节点屏蔽之后就可以正常读取数据了
回复

使用道具 举报

13

主题

96

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3222
金钱
3222
注册时间
2016-5-7
在线时间
531 小时
发表于 2021-1-27 23:44:44 | 显示全部楼层
需要屏蔽pinctrl_uart2: uart2grp和pinctrl_uart2dte: uart2dtegrp节点里的uart2 io
回复

使用道具 举报

4

主题

14

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
325
金钱
325
注册时间
2016-5-18
在线时间
52 小时
发表于 2021-3-1 14:52:23 | 显示全部楼层
本帖最后由 安好琴天 于 2021-3-1 14:57 编辑

屏蔽&uart2 节点下的 < &pinctrl_uart2 > 里面的内容 即可
回复

使用道具 举报

4

主题

6

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2020-6-2
在线时间
13 小时
发表于 2021-12-17 03:52:08 | 显示全部楼层
在nxp的imx6ull.dts中ecspi的状态是disabled,需要改成okay才可以,即需要先使能ecspi节点
                                ecspi3: ecspi@02010000 {
                                        #address-cells = <1>;
                                        #size-cells = <0>;
                                        compatible = "fsl,imx6ul-ecspi", "fsl,imx51-ecspi";
                                        reg = <0x02010000 0x4000>;
                                        interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
                                        clocks = <&clks IMX6UL_CLK_ECSPI3>,
                                                 <&clks IMX6UL_CLK_ECSPI3>;
                                        clock-names = "ipg", "per";
                                        dmas = <&sdma 7 7 1>, <&sdma 8 7 2>;
                                        dma-names = "rx", "tx";
                                        status = "okay";
                                };
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2022-5-19
在线时间
5 小时
发表于 2022-5-19 19:12:27 | 显示全部楼层
NewGuard 发表于 2020-7-16 21:58
花了这么久的时间总算解决了,之前上面说把UART2相关的屏蔽也是对的,我试了好久,发现把节点uart2状态改 ...

可以  这个方法好
回复

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2020-8-26
在线时间
22 小时
发表于 2022-5-23 22:45:33 | 显示全部楼层
本帖最后由 niuyongtao 于 2022-5-25 11:43 编辑

视频在设备树里面的pinctrl_ecspi3: ecspi3grp下的 pin脚后面的参数是0x100b0和0x100b1,视频中的是0x10b0,所以读取到的就是0,更改后读取到的就正常了

  pinctrl_ecspi3: ecspi3grp{
            fsl,pins = <
                MX6UL_PAD_UART2_TX_DATA__GPIO1_IO20   0x100B0
                MX6UL_PAD_UART2_RX_DATA__ECSPI3_SCLK  0x100B1
                MX6UL_PAD_UART2_CTS_B__ECSPI3_MOSI    0x100B1
                MX6UL_PAD_UART2_RTS_B__ECSPI3_MISO    0x100B1
            >;
        };
回复

使用道具 举报

15

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
325
金钱
325
注册时间
2022-4-12
在线时间
41 小时
发表于 2022-5-25 09:16:47 | 显示全部楼层
niuyongtao 发表于 2022-5-23 22:45
视频在设备树里面的pinctrl_ecspi3: ecspi3grp下的 pin脚后面的地址是0x100b0和0x100b1,视频中的是0x10b0, ...

这个值是引脚电气属性配置,最低位是引脚翻转速度吧
回复

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2020-8-26
在线时间
22 小时
发表于 2022-5-25 11:45:18 | 显示全部楼层
本帖最后由 niuyongtao 于 2022-5-25 11:50 编辑
18768178170 发表于 2022-5-25 09:16
这个值是引脚电气属性配置,最低位是引脚翻转速度吧

是电气属性配置,视频中少写了个0,不是最低位的事情
回复

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2020-6-14
在线时间
5 小时
发表于 2023-3-19 16:58:53 | 显示全部楼层
Gold_Br 发表于 2020-7-19 23:17
我觉得根本问题没找到, 应该是 disable 你却用了disabled居然能用。

就是disabled
回复

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2020-8-26
在线时间
10 小时
发表于 2023-3-22 10:39:09 | 显示全部楼层
感谢楼主,设备树学习了
回复

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2022-6-20
在线时间
39 小时
发表于 2023-11-17 11:56:04 | 显示全部楼层
还有粗心导致的,自己把pinctrl_ecspi3的fsl,pins写成了fsl,pin也是找了一下午才发现
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2024-5-21
在线时间
10 小时
发表于 2024-6-21 16:45:01 | 显示全部楼层
补充一个,cs-gpio那边,是cs-gpios,我忘记我用的是哪个版本的设备树,有个版本设备树写错了,写成cs-gpio,我是因为这里导致一直都是0
回复

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2022-8-16
在线时间
16 小时
发表于 2024-10-9 14:02:45 | 显示全部楼层
Sp9rk1e 发表于 2024-6-21 16:45
补充一个,cs-gpio那边,是cs-gpios,我忘记我用的是哪个版本的设备树,有个版本设备树写错了,写成cs-gpio ...

good good
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 17:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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