嵌入式开发者社区

标题: AM57x SPI驱动开发 [打印本页]

作者: czs----Tronlong    时间: 2019-11-22 12:02
标题: AM57x SPI驱动开发
客户问题 ①
你好,我们购买的是TL5728-EasyEVM板卡。
我们想调试验证TL5728-EasyEVM的QSPI外接口是否正常,以便给我们项目对外接口提供选择的可能。具体步骤如下:

1.    参照你们的配置方法增加了QSPI1配置,配置管脚和dts及其步骤在下面有具体描述,但是还是有问题,帮忙看看到底哪里没设好。缺省下貌似QSPI1被flash使用,不能外接使用?请指导一下设置一个能外接设备用的qspi或spi口。谢谢!

[attach]5876[/attach]

2.    查得这几个管脚地址如下:
qspi1_rtclk:0x1474
qspi1_d0:0x1480
qspi1_d1:0x1484
qspi1_d2:0x147C
qspi1_d3:0x1478
qspi1_sclk:0x1488

3.    配置的dts,tl5728-easy-evm.dts包含了am57xx-evm-common.dtsi,下面是在am57xx-evm-common.dtsi里面写的配置:

[attach]5877[/attach]

4.  编译设备树
Make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- tl5728-easy-evm.dtb

5.  拷贝tl5728-easy-evm.dtb到sd卡,后来重新制作sd卡,结果有问题,/dev/目录还是没有spidev设备文件。
查看dmesg有提示“[    2.983477] pinctrl-single 4a003400.pinmux: could not add functions for qspi1_pins_default 4294959240x”。

作者: czs----Tronlong    时间: 2019-11-22 12:08
1.     根据核心板引脚定义说明,底板拓展口引出的SPI1总线CS0引脚在核心板内部已被使用;

[attach]5878[/attach]

[attach]5879[/attach]

2.    我司设备树文件中默认情况已将QSPI初始化,并在设备树文件中配置好了QSPI FLASH设备节点;

[attach]5880[/attach]

3.    因此,您需要使用开发板底板的QSPI,只需参照我司设备树文件,添加一个CS1的设备节点,并在CS1节点中配置好SPI设备驱动即可:

[attach]5881[/attach]

[attach]5882[/attach]

4.    可以命令行执行如下指令查看SPI设备节点:
Target#     modprobe spidev
Target#     ls /dev/spi*
作者: 梁淑怡-Tronlong    时间: 2019-11-28 16:39
客户问题 ②
    我们按照创龙官方视频网站的教学教程,配置SPI2设备树,操作步骤和图示如下,编译的时候出错,帮忙看看是什么问题。

步骤如下:
1.spi2管脚

[attach]5920[/attach]
2.管脚数据
[attach]5921[/attach]
[attach]5922[/attach]
[attach]5923[/attach]
3.dts文档编写
[attach]5924[/attach]
[attach]5925[/attach]
[attach]5926[/attach]
4.编译dts
[attach]5927[/attach]





作者: czs----Tronlong    时间: 2019-11-28 16:52
Dear 您好,

        您的错误是由SPI设备树节点造成的,对于AM5728的SPI设备节点应该为”mcspi“,可以参考我司设备树文件的写法:

[attach]5928[/attach]

[attach]5929[/attach]


作者: 梁淑怡-Tronlong    时间: 2019-12-6 14:39
已按照上文指引,QSPI设备节点名已修改成“mcspi2“”,编译dts通过,拷贝到sd卡rootfs分区的boot目录,用sd启动linux;
查看dmesg信息,具体信息在附件spi2.docx;
然后短接spi2_d0和spi2_d1。
运行spidev_test测试工具,打印的RX全是0,没接受到数据?spidev_test工具的代码文件是原文件,没改过。

具体操作步骤和截图在附件spi2.docx,帮忙分析一下哪里不对,谢谢。
另附件两个dts文件是正在使用的dts,帮忙确认一下正确性。SPI测试:
步骤1.  重新修改QSPI设备节点名
[attach]5985[/attach]
[attach]5986[/attach]
[attach]5987[/attach]

步骤2.      可以正常编译生成dtb文件
[attach]5988[/attach]


步骤3.      执行"dmesg | grep"指令查看log信息

[attach]5989[/attach]

步骤4.    使用杜邦线短接SPI2_D0SPI2_D1
[attach]5990[/attach]


步骤5.      运行测试工具,QSPI接收到的数据有误:
[attach]5991[/attach]



作者: czs----Tronlong    时间: 2019-12-6 14:55
您好,从log打印信息来看,QSPI驱动没有正常加载:

1.  QSPI的pinmux偏移地址配置有误,设备树中的“偏移地址”并非是datasheet中的“Address Offset ”,而是由“Physical Address ”算出;

[attach]5992[/attach]

2.  可以在文件系统中,使用 devmem2 命令查看对应寄存
器,看是否成功配置引脚为对应功能

3.  具体可以参考附件文档。
4.  SPI应用层开发可以参考内核源码linux-rt-4.9.65-gcaf89f0-v1.2.tar.gz\tools\sp 目录下的spidev_test.c 文件

[attach]6017[/attach]


作者: czs----Tronlong    时间: 2019-12-18 15:35
客户问题 ③

您好,我在进行AM5708 SPI测试的时候遇到了一些问题,写入数据的时候用示波器观察没有数据。经过排查,发现原理图上引脚的数据方向与5708默认的数据方向接反了。原理图与5708引脚默认的数据方向见下图。

[attach]6024[/attach]

[attach]6025[/attach]

参考数据手册中数据方向可以配置为输入和输出。请问如何在设备树中进行配置?

解决方案:
可以参考“Documentation/devicetree/bindings/spi/omap-spi.txt”文档,在设备树文件中对SPI数据引脚进行配置:


[attach]6027[/attach]

[attach]6026[/attach]



作者: czs----Tronlong    时间: 2020-2-28 15:46
客户问题 ④


由于AM5728只有两路CAN接口,但系统现在需要第三路CAN,现在打算基于AM5728的SPI总线,外接MCP2515芯片转成CAN使用

[attach]6103[/attach]

现在使用创龙AM5728开发板SPI3连接MCP2515,除去一个完整的SPI所需要的CS,CLK, MISO, MOSI信号外,还需要一个IO作为中断
请问是否有驱动相关配置方法?
另:尝试在&dra7_pmx_core中配置相关IO,不能生效



参考建议:

1.    Linux内核对MCP2515芯片芯片配置参考文档如下:
                Documentation/devicetree/bindings/net/can/microchip,mcp251x.txt
                drivers/net/can/spi/mcp251x.c



[attach]6104[/attach]




2.  由于您是使用AM5728连接MCP2515芯片的SPI总线,同时SPI协议本身不支持中断,所以没有默认的配置方法。
    建议您可以参考我司设别树文件中ads7846触摸屏芯片,里面的pendown-gpio就是中断输入引脚,要在ads7846驱动里面做初始化



[attach]6105[/attach]






欢迎光临 嵌入式开发者社区 (https://51dsp.net/) Powered by Discuz! X3.4