This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] ADS7950:iMX93上 ADS7950配置的 I/O 错误

Guru**** 2382630 points
Other Parts Discussed in Thread: ADS7950
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1449542/ads7950-i-o-error-with-ads7950-configuration-on-imx93

器件型号:ADS7950

工具与软件:

您好!

我正在进行以下设置:

CPU:iMX93
IC:ADS7950
SPI:GPIO2上的 LPSPI7芯片选择4.
操作系统:基于内核版本 L6.1.22的 Yocto Linux

尝试读取 sysfs 中的 ADC 通道值时出现 I/O 错误。

以下是相关的设备树配置:

lpspi7:SPI@42710000{
#address-cells =<1>;
#size-cells =<0>;
Compatible ="FSL、imx93-SPI"、"FSL、imx7ulp-SPI";
REG =<0x42710000 0x10000>;
中断= ;
时钟=<&clk IMX93_CLK_LPSPI7_gate>
<&clk IMX93_CLK_BUS_WAKEUP>;
时钟名称="PER"、"IPG";
};

&lpspi7 {
fsl、spi-num-chipselect =<1>;
pinctrl-names ="默认值"、"睡眠";
pinctrl-0 =<&pinctrl_lpspi7>、<&pinctrl_lpspi7_cs>;
pinctrl-1 =<&pinctrl_lpspi7>、<&pinctrl_lpspi7_cs>;
CS-GPIO =<&GPIO2 4 GPIO_ACTIVE_LOW>;
DMA =<&edma2 83 0 0>、<&edma2 84 0 1>;
DMA-names ="TX"、"Rx";
分配的时钟速率=<30000000>;
状态="正常";

ADC@0{
兼容="ti、ads7950";
REG =<0>;/* SPI 芯片选择0 */
VREF-SUPPLY =<Registered_5V>;
SPI-max-frequency =<10000000>;
#io-channel-cells =<1>;
状态="正常";

};
};

pinctrl_lpspi7:lpspi7grp{/* LPSPI7:LPSPI7 IOMUX 引脚配置*/
FSL、PINS =<
MX93_PAD_GPIO_IO07__LPSPI7_SCK 0x3fe
MX93_PAD_GPIO_IO06__LPSPI7_SOUT 0x3fe
MX93_PAD_GPIO_IO05__LPSPI7_SIN 0x3fe
>;
};

pinctrl_lpspi7_cs:lpspi7_cs_grp{
FSL、PINS =<
MX93_pad_GPIO_IO04__GPIO2_IO04 0x31e
>;
};


为了调试此问题、我在 TI ADS7950驱动程序代码中添加了日志记录、如下所示:

驱动程序代码:

diff --git a/drivers/iio/adc/ti-ads7950.c b/drivers/io/adc/ti-ads7950.c
索引2cc9a9bd9db6..d4ce4917d1fb 100644
--- a/drivers/io/adc/ti-ads7950.c.
++ b/drivers/io/adc/ti-ads7950.c
@@-377、6 +377、8 @@ static int ti_ads7950_read_raw (struct iio_dev * Indio_dev、
如果(ret < 0)
回流塔;

+ printk ("Address:%u\n"、(unsigned int)chan->address);
+ printk ("提取值:%u\n"、(unsigned int) TI_ADS7950_extract (ret、12、4));
if (chan->address!= TI_ADS7950_extract (ret、12、4))
返回-EIO;

错误:

root@imx93-iwg50M-SODIMM:~# cat /sys/bus/iio/devices/iio:device1/in_voltage0_raw
[ 100.929228]地址:0
[100.931641] Extract value: 15.
CAT:"/sys/bus/iio/devices/iio:device1/in_voltage0_raw":输入/输出错误
root@imx93-iwg50M-SODIMM:~# cat /sys/bus/iio/devices/iio:device1/in_voltage1_raw
[ 103.849178]地址:1.
[ 103.851563]提取值:15
CAT:"/sys/bus/iio/devices/iio:device1/in_voltage1_raw":输入/输出错误
root@imx93-iwg50M-SODIMM:~# cat /sys/bus/iio/devices/iio:device1/in_voltage2_raw
[ 106.253289]地址:2
[ 106.255694]提取值:15.
CAT:"/sys/bus/iio/devices/iio:device1/in_voltage2_raw":输入/输出错误
root@imx93-iwg50M-SODIMM:~# cat /sys/bus/iio/devices/iio:device1/in_voltage3_raw
[ 108.949172]地址:3.
[ 108.951597]提取值:15.
CAT:"/sys/bus/iio/devices/iio:device1/in_voltage3_raw":输入/输出错误
root@imx93-iwg50M-SODIMM:~#

您能否说明导致此行为的原因、或者我的配置或设置中是否存在任何潜在问题?

此致、
Daniel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Daniel、您好!

    您似乎正在尝试使用 Linux 内核中包含的适用于 ADS7950的驱动程序。 遗憾的是、由于它不是由 TI 直接开发的、因此我们不支持相关的任何问题。 建议您联系代码开发人员。  

    否则、如果您有一个可以连接到 SPI 引脚的逻辑分析仪、则可以发送逻辑捕获文件、我可以尝试调试通信中出现的问题。

    此致、
    Joel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Joel:

    我已附上逻辑捕获文件供您查看。 请告诉我您的想法。

    ADS7950SBRGER -SPI7 (逻辑输出).Sal

    此致、
    Daniel


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Daniel、您好!

     ~我的初始外观、可以看到 Δ V CS 会下降、而当传输开始时 SCLK 为高电平。 该器件~提供连续时钟(通过时序图中 SCLK 上的虚线表示)、但在 SCLK 为低电平时 Δ V CS 仍需要下降。 MCU 应配置为 SPI 模式0 (CPOL = 0、CPHA = 0)。

    下面是对器件可能有问题的条件的捕获。

    和~了在 Δ V CS 下降(CPOL= 1)之前 SCLK 应该是怎样的低电平。  

    完成后、我可以查看是否发生了更多问题。

    此致、
    Joel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Joel:

    更改引脚的焊盘 CTL 值后、我们能够在时钟为低电平时使 CS 变为低电平(请参阅连接的逻辑分析仪图像)。



    这些是 DTS 更改。

    pinctrl_lpspi7:lpspi7grp{/* LPSPI7:LPSPI7 IOMUX 引脚配置*/
    FSL、PINS =<
    MX93_PAD_GPIO_IO07__LPSPI7_SCK 0x141e
    MX93_PAD_GPIO_IO06__LPSPI7_SOUT 0x141e
    MX93_PAD_GPIO_IO05__LPSPI7_SIN 0x141e
    >;
    };

    pinctrl_lpspi7_cs:lpspi7_cs_grp{
    FSL、PINS =<
    MX93_pad_GPIO_IO04__GPIO2_IO04 0x402
    >;
    };


    但我们仍然遇到3个通道上的 IO 错误、以及通道0上的值为0。 提供外部电压后、通道0中的值不变。

    root@imx93-iwg50M-SODIMM:~# cat /sys/bus/iio/devices/iio:device1/in_voltage*
    0
    CAT:"/sys/bus/iio/devices/iio:device1/in_voltage1_raw":输入/输出错误
    CAT:"/sys/bus/iio/devices/iio:device1/in_voltage2_raw":输入/输出错误
    CAT:"/sys/bus/iio/devices/iio:device1/in_voltage3_raw":输入/输出错误
    2.442002442.

    请告诉我您对此有何想法。

    此致、
    Daniel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Daniel、您好!

    很抱歉、我能让您再次附上 Saleae 逻辑捕获吗? 更容易查看在器件和 MCU 之间发送了哪些确切命令。

    此致、
    Joel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Joel:

    找到连接的逻辑分析仪数据

    ADS7950SBRGER -SPI7 (逻辑输出) SPI Mode-0 (19-12-2024).Sal

    此致、
    Daniel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Daniel、您好!

    很遗憾、链接已过期。 您可以重新发送吗? 我不能看这个,因为上周的圣诞节假期。

    此致、
    Joel