完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我一直在尝试在 i.MX8QXP-MEK(CPU + BaseBoard)中
设置lpspi0 ,通过带 DMA 的 BB(J29)中的 Arduino Header 端口连接到 SLB9670 TPM2.0 设备。已正确检测到设备,但我一直遇到 DMA 设置问题,并且 spi 配置正在切换到 PIO: root@imx8qxpc0mek:~# dmesg | grep spi [ 1.464934] fsl_lpspi 5a000000.spi: spi_register_controller error. [ 1.479991] spi-nor spi0.0: mt35xu512aba (65536 Kbytes) [ 3.087588] fsl_lpspi 5a000000.spi: dma setup error -19, use pio [ 3.103069] tpm_tis_spi spi1.0: 2.0 TPM (device-id 0x1B, rev-id 22) root@imx8qxpc0mek:~# dmesg | grep tpm [ 3.103069] tpm_tis_spi spi1.0: 2.0 TPM (device-id 0x1B, rev-id 22) [ 3.115911] tpm tpm0: A TPM error (256) occurred attempting the self test [ 3.127689] tpm tpm0: starting up the TPM manually Distro 是使用版本 LF5.10.72_2.2.0 (hardnott) 设置的,尽管我在版本 LF5.15.32_2.0.0 ( kirkstone ) 中也看到了同样的问题。两者均根据 IMXLXYOCTOUG 文档进行设置。默认 linux-imx 内核和 fsl-lpspi.c驱动程序源。lpspi0 的 DMA 配置是在设备树文件imx8-ss-dma.dtsi之后设置的。唯一的区别是分配的时钟速率,从 20 MHz 到 60 MHz: lpspi0: spi@5a000000 { //compatible = "fsl,imx7ulp-spi", "fsl,imx8qxp-spi"; compatible = "fsl,imx7ulp-spi"; reg = <0x5a000000 0x10000>; #address-cells = <1>; #size-cells = <0>; interrupts = interrupt-parent = <&gic>; clocks = <&spi0_lpcg 0>, <&spi0_lpcg 1>; clock-names = "per", "ipg"; assigned-clocks = <&clk IMX_SC_R_SPI_0 IMX_SC_PM_CLK_PER>; assigned-clock-rates = <60000000>; //assigned-clock-rates = <20000000>; power-domains = <&pd IMX_SC_R_SPI_0>; dma-names = "tx","rx"; dmas = <&edma2 1 0 0>, <&edma2 0 0 1>; status = "disabled"; };对于实际的设备节点本身,在imx8x-mek.dtsi中: &lpspi0 { #address-cells = <1>; #size-cells = <0>; fsl,spi-num-chipselects = <1>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_lpspi0 &pinctrl_lpspi0_cs>; cs-gpios = <&lsio_gpio1 8 GPIO_ACTIVE_LOW>; status = "okay"; tpm: slb9670@0 { reg = <0>; //compatible = "infineon,slb9670", "tcg,tpm_tis-spi"; compatible = "infineon,slb9670"; spi-max-frequency = <2000000>; status = "okay"; }; spidev0: spi@0 { reg = <0>; compatible = "rohm,dh2228fv", "spidev"; spi-max-frequency = <1000000>; status = "disabled"; }; };当前使用 CS 作为 GPIO - 正如 在imx8qm-lpddr4-val-lpspi.dts中的 NOR 闪存节点中所示它一直按预期工作。将默认的 assigned-clock-rate 属性更改为 60000000 可以有效地实现 SPI 从设备 (2[MHz]) 所需的时钟线。 处理器和 SLB9670 设备之间的 LPSPI0 总线活动。 在这种情况下,DMA 错误的原因可能是什么? |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
1906个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36358 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
4395 浏览 0 评论
6050 浏览 1 评论
6763 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4212 浏览 0 评论
619浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
614浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
605浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
694浏览 2评论
796浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 04:43 , Processed in 1.276589 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号