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.

[参考译文] 写入/读取 ADS 8634寄存器

Guru**** 2618835 points

Other Parts Discussed in Thread: AM4372, ADS8634

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/692882/write-read-ads-8634-register

器件型号:ADS8634
主题中讨论的其他器件:AM4372

工具/软件:Linux

您好、先生、

我有一些问题需要你的善意帮助。

我想启用 辅助配置寄存器的内部 VREF 位(地址= 06h; 首先、发送 数据(0x0c)、包括寄存 器地址和  读/写指令 、然后发送数据(0x04)。其次、发送读命令(0x0D)。问题是我无法在寄存器(06h)中读取正确的日期。我的理解是否有问题?能否给我一些建议?

unsigned int read_ref[2];
unsigned int TX[2];
TX[0]=(0x06<1);
TX[1]=0x04;

 unsigned int read_cmd[2];
 READ_CMD[0]=((0x06<<1)|0x01);
 Read_cmd[1]=0xff;
 写入(FD、TX、2);
 写入(fd、read_cmd、2);
 读取(fd、read_ref、2);    
 printf ("读取字节为:read_ref[0]=%x read_ref[1]=%x\n"、read_ref[0]、read_ref[1]);

结果如下:

root@AM437X-EVM:/usr/bin #./SPI -D /dev/spidev1.0      
[273.961755] spidev spi1.0:不对 McSPI 使用 DMA (-19)
[273.967391] spidev spi1.0:不对 McSPI 使用 DMA (-19)
[273.977474] spidev spi1.0:不对 McSPI 使用 DMA (-19)
SPI 模式:0
每字位数:8.
最大速度:1000Hz (1KHz)
读取字节为:read_ref[0]= 10c0d read_ref[1]= b6f06b50

以下是我的 SPI 配置:

spi0_pins_default:spi0_pins_default{
  pinctrl-single、pins =<
      AM4372_IOPAD (0x950、PIN_INPUT | MUX_MODE0)/*(P23) spi0_SCLK/spi0_SCLK *
     AM4372_IOPAD (0x954、PIN_INPUT | MUX_MODE0) /*(T22) spi0_d0.spi0_d0 *
     AM4372_IOPAD (0x958、PIN_OUTPUT | MUX_MODE0)/*(T21) spi0_D1.spi0_D1 *
     AM4372_IOPAD (0x95c、PIN_OUTPUT | MUX_MODE0)/*(T20) spi0_cs0.spi0_cs0 *
  >;
 };

spi0{(&S)
 状态="正常";
 pinctrl-names ="default";
 pinctrl-0 =<&spi0_pins_default>;
 ti、pidd-d0-in-d1-out =<1>;
 
 spidev@0{
   #address-cells =<1>;
   #size-cells =<0>;
   兼容="spidev";
   reg =<0>;
  SPI-max-frequency =<1000000>;
 };
};

spi0: SPI@48030000 {
   兼容="ti、am4372-mcspi"、"ti、omAP4-mcspi";
   REG =<0x48030000 0x400>;
   中断= ;
   ti、hwmods ="spi0";
   #address-cells =<1>;
   #size-cells =<0>;
   时钟=<&DPLL_PER_M2_DIV4_ck >;
   时钟名称="Fck";
   时钟频率=<1000000>;
   STATUS ="禁用";
  };
电路图如下
 
 

该 SDK 为 Linux-AM437X-EVM-04.03.00.05。

内核为 linux-4.9.69。

期待您的回复。

此致、

Lihua。

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

    请尝试在一个命令中发送寄存器地址、加上 WRITE、以及寄存器内容、而不是如您所述的那样发送两个单独的命令。
    此外、如果您可以提供数字通信、CS、SCLK、SDI、SDO、 来检查时序。
    查看您的原理图、HVSS 是否已供电? 在图像中、它看起来不是。

    此致
    Cynthia
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Cynthia
    我不太关注您、您的意思是、我应该发送写入命令、包括寄存器地址和数据、然后发送读取命令、
    请参阅器件驱动程序"spidev.c"中的读/写函数、

    写入(FD、TX、2); -->将 ads8634的寄存器06h 写入值04。
    //写入(fd、read_cmd、2);
    读取(fd、read_cmd、4); -->向(DIN 和 DOUT)发送总共32个字节
    read_cmd 包括写入地址、fisrt 2字节是 DIN 的写入地址(值:06h <1 |1、0xff)、以下2字节是我希望从 DOUT 从寄存器读取的字节。(0xff、0xff)
    这样做对吗?