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并希望通过 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. 编程寄存器。
命令寄存器用于器件采样模式、待机模式、断电模式和 REST 模式
程序寄存器用于通道序列、数据格式、模拟输入范围、报警功能。
与器件通信时、我建议使用连接到数字线路的示波器、以确保数据线路正确执行预期的操作。 这还有助于调试任何问题并确认 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位看到。
此致、
戴尔