完善资料让更多小伙伴认识你,还能领取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 错误的原因可能是什么? |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
2135个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
37376 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
6775 浏览 1 评论
7793 浏览 1 评论
7642 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
5071 浏览 0 评论
1556浏览 2评论
关于NINA-W132 Wi-Fi模块SPI通信遇到的疑问求解
1208浏览 2评论
如何在MPC PowerPC MCU上首次刷写后禁用BDM?
749浏览 1评论
将HFREFR和LFREFR寄存器值设置为错误的值来将故障注入CMU,但CMU_ISR值始终为零,为什么?
735浏览 1评论
将SPSDK for FRDM-MCX-W71 SDK与VS一起安装时出现hidapi构建错误怎么解决?
678浏览 1评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 01:03 , Processed in 0.517839 second(s), Total 70, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
533