主题中讨论的其他器件:AM4372
工具/软件:Linux
大家好!
我最近在/dev/dev 中注册了我的 spidev 设备( 有关详细信息、请参阅此处)。
不幸的是、我的器件似乎无法正常工作。 到目前为止、我只研究了 spidev1.1。 我可以打开器件。 当我配置它时、我确实会收到有关不使用 DMA 的投诉消息(请参阅下面的内容)。 然后、我收到一条 TXS 超时消息。
我使用的程序与 这个程序非常相似 。 我刚刚添加了大量打印内容并减慢了速度、以便我能够知道导致系统日志消息的操作。
这是输出。
root@AM437X-EVM:/ace/bin #./helloSpi -C 301
赫洛斯皮...
选择的选项
器件=/dev/spidev1.1
速度= 24000000
延迟= 0
位= 8
MODE = 0x04
...正在创建设备
设置 SPI 选项
正在打开文件句柄
...Committing 选项 <--此处有3个 ioctl 调用
[62332.673461] spidev 1.1:不对 McSPI 使用 DMA (-19)
[62332.678907] spidev spi1.1:不对 McSPI 使用 DMA (-19)
[62332.689027] spidev spi1.1:不对 McSPI 使用 DMA (-19)
...正在设置数据传输
TX = 0x03 0x01 0x00 0x00 0x00 0x00 0x00 0x00
RX = 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
...在 这里执行 ioctl 数据传输<-- 1 ioctl 调用
[62340.712144] spidev spi1.1:TXS 超时
接收缓冲器
RX = 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
再见!
我的电气团队负责 spidex1.1的 clk、miso、mosi 和 cs 引脚、没有任何活动。
我还看到 CS 引脚一直保持低电平。 我认为只有当 SPI 主设备要向该特定器件发送数据或从该特定器件检索数据时、它才会变为低电平。
这是我的引脚多路复用器...
SPI2_INTERNAL_PINS_DEFAULT:SPI2_INTERNAL_PINS_DEFAULT{
pinctrl-single、pins =<
0x260 (PIN_OUTPUT | INPUT_EN | MUX_MODE0)/*(N20) SPI2_SCLK/SPI2_SCLK */
0x264 (PIN_OUTPUT | MUX_MODE0) /*(P22) SPI2_d0.SPI2_d0 */
0x268 (PIN_INPUT_PULLUP | MUX_MODE0) /*(P20) SPI2_D1.SPI2_D1 *
0x1b0 (PIN_OUTPUT | MUX_Mode4) /*(AE17) cam0_hd.SPI2_CS1 */
0x1c4 (PIN_OUTPUT | MUX_Mode4) /*(AB19) cam0_data8.SPI2_CS2 */
>;
}
SPI2{
兼容="ti、OMAP2-mcspi";
pinctrl-names ="default";
pinctrl-0 =<&SPI2_INTERNAL_PINS_DEFAULT>;
状态="正常";
TI、SPI-num-cs =<4>;
ti、pidd-d0-out-d1-in =<1>;
ksz8895@1{
兼容="Rohm、dh2228fv";
SPI-max-frequency =<100000 >;
reg =<0x1>;
状态="正常";
#address-cells =<1>;
#size-cells =<0>;
};
ksz8895@2{
兼容="Rohm、dh2228fv";
SPI-max-frequency =<100000 >;
reg =<0x2>;
状态="正常";
#address-cells =<1>;
#size-cells =<0>;
};
};
以下是(我认为相关的) defconfig 设置。 实际上、这里是与 SPI 相关的所有内容。 我强调了我认为实际重要的问题
root@AM437X-EVM:/ace/bin cat /proc/config.gz gunzip|grep SPI|grep \#-v|grep spin -v
CONFIG_REGMAP_SPI=y
CONFIG_MTD_SPI_NOR = y
CONFIG_SPI_cadence_QUADSPI=y
CONFIG_WLCORE_SPI=m
CONFIG_INPUT_ADXL34X_SPI=m
CONFIG_SPI=y
CONFIG_SPI_MASTER=y
CONFIG_SPI_BI_BANG=m
CONFIG_SPI_GPIO=m
CONFIG_SPI_OMAP24xx=y
CONFIG_SPI_TI_QSPI=y
CONFIG_SPI_SPIDEV=y
CONFIG_SND_SOC_I2C_AND_SPI=y
CONFIG_RTC_I2C_AND_SPI=y
我看到过有关不同引脚复用设置的各种文章。 我看到 Biser 说 clk 需要是输入(我尝试过、没有变化)、我看到另一篇文章说他们成功地将 clk 作为 INPUT_EN 标志的输出。 因此、我不确定"正确"的答案是什么。
欢迎使用所有想法/建议/故障排除提示。
提前感谢!
Nathan