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.

[参考译文] ADS8664:ADS8664 SPI 通信

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/840533/ads8664-ads8664-spi-communication

器件型号:ADS8664

我使用 ADS8664并希望通过 SPI 进行通信。

我想通过读取默认寄存器值来确认 SPI 通信。

我想知道如何读取默认寄存器值。

我尝试以这种方式使用 SPI。 使用 MSB 和32位发送数据(在数据表中、命令或程序寄存器为16位+ 附加位8。 我只发送8个 clk。)

1.我发送命令数据的方式为:STAN_BY_STAND=>0x82000000

2.我发送程序寄存器 READ => 0x2E000000

  地址0x17位于15:9位。  因此  、应用了左移1位、然后数据为 0x2E。

3.重复步骤2.    通过波形检查。   

我确认 CLK、SDI 和 CS 运行 良好。 但 SDO 的行为很奇怪。 我想知道控制这个芯片的方法。

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

    您好!

    该器件具有两种类型的寄存器1。 命令寄存器和2. 编程寄存器。

    1. 命令寄存器用于器件采样模式、待机模式、断电模式和 REST 模式

    2. 程序寄存器用于通道序列、数据格式、模拟输入范围、报警功能。

    与器件通信时、我建议使用连接到数字线路的示波器、以确保数据线路正确执行预期的操作。 这还有助于调试任何问题并确认 SDI 和 SDO 数据。

    要读取程序默认程序寄存器、CS 变为低电平后总共需要24个 SCLK 脉冲。 以下内容(数据表除外)将有助于描述如何读取寄存器

     

    由于您尝试读取通道1的警报阈值、因此第一位将是地址:17h (0001 0111 b)、但寄存器仅占用7位、这意味着需要截断前导位。 如您所述、需要进行左移、但这需要以二进制方式完成、以确保正确完成移位。

    然后、后面跟随一个0来设置为读取。 之后、所有位都不用担心、因此设为零。

    然后、将该命令组合在一起:2E 或(0010111 0 0000 0000b)

    ~此帖子已更新以进行澄清。 对这种混乱表示歉意~

     此致

    Cynthia

     

     

     

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

    您好、Cynthia

    我按照您的指南尝试了 SPI 测试。 但 SPI MISO 不起作用。

    测试方法如下、

    我发送数据命令0x850000。

    2.重复发送数据0x170000 (作为指南)

    结果是 MISO 数据0。

    类似这样的波形- 0x170000数据。

    (黄色:MOSI,蓝色:CS,粉色:CLK (约110 ns),绿色 :MISO)

    我有一些问题。

    1.如果我想在17h 中读取->然后发送0x170000、那么、如果我想在17h 中写入、我发送97h。 对吗?

    2.如果我想 使用 命令,我发送 24 clk 或 16 clk,或者 不管。  然后我按照表格发送数据? (0x8500、0xC000...  等)

    如果我想 使用程序寄存器、 我只发送16位的程序寄存器地址? (0x01、0x17等)

    此致、

    米尼宇

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

    您好!

    我在之前的回复中犯了一个错误、我在帖子中进行了更正。

    现在、您已正确计时、我建议更改程序寄存器。 然后、尝试读取同一个寄存器以确认是否已更改为您想要的值。

    要写入程序 寄存器、需要将位8设置为高电平。 因此(0010111 1 xxxx xxxxb)为2Fxxh。

    如果您写入程序寄存器、并且不关心该帧中可能提供的转换结果、那么24个 SCLK 周期就可以了。 如果您仍然希望该帧提供转换结果、则需要32个 SCLK 脉冲。



    要写入命令寄存 器、需要一个完整的32个 SCLK 数据帧、并且应该遵循数据表中的图1。  这是一个只写寄存器。

    此致

    Cynthia

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

    大家好、 Minwoo、

    要读取或写入程序寄存器、在/CS 之后至少需要24个 SCLK。 您在第一个帖子中的命令(0x2E000000)正确读取寄存器高阈值 LSB 寄存 器、问题是、您通过发送 STANDBY 命令(0x82000000)将器件置于待机模式。 8位寄存器数据应该在 SDO 的第17-24位看到。  

    此致、

    戴尔

x 出现错误。请重试或与管理员联系。