工具与软件:
我正在尽量减少设备需要处理的案例数。 例如、无论是否启用了 CRC、我都要发送相同的消息来触发 ADS7038中的复位。 这是可行的吗? 换句话说、当禁用 CRC 时、从主机器件附加的 CRC 位是否会被视为"无关"?
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.
您好、Joel:
我正在尝试通过设置 GENERAL_CFG 寄存器中的 RST 位来复位器件。 情况:主(主机)器件不知道 ADS7038是否处于 CRC 模式(如果主器件可能已复位、则可能会发生这种情况)。 如果我使用 CRC 发送消息 0x180101E1 (设置位操作码、GENERAL_CFG 地址、MASK、CRC)、无论当前处于何种 CRC 模式、ADS7038是否会正确解释位流? 也就是说、如果它处于 CRC 模式、CRC 校验成功并且触发复位-如果它没有处于 CRC 模式、我附加的 CRC 位被忽略、并且在前24位中从消息触发复位?
谢谢!
尊敬的 Nestor:
我懂了。 总体而言、有4个 CRC 状态组合可确定是否正确解析 SPI 命令。
1.关闭主机 CRC 和关闭器件 CRC:这只是一条正常指令
2.主机 CRC 关闭且器件 CRC 开启:这会产生 CRC 错误、并且按照数据手册中"数据接口上的 CRC"部分所述进行处理
3.主机 CRC 开启&设备 CRC 关闭:这是我们要调查的情况
4.主机 CRC 开启和器件 CRC 开启:提供正确的8位 CRC、通信正常运行
为了测试 案例3、我使用寄存器0作为测试寄存器、因为它默认返回0x81、我已验证。 当 ADS7038 CRC 关闭时、我发送了一个32位数据流0x08000156。 前三个字节是用于关闭 SYSTEM_STATUS 寄存器(0x00)中 BOR 位的写入指令。 第四个字节是前24位的相应8位 CRC 值。 如果最后一个字节是无关字节、我会看到 SYSTEM_STATUS 寄存器在下一次读取时返回0x80。
再次读取 SYSTEM_STATUS 寄存器后、该寄存器会再次返回0x81。 我这次再次尝试使用24位写入指令清除最后一位(没有 CRC 字节)、在另一个寄存器读取时、寄存器现在返回0x80。
由于 GENERAL_CFG 位中的 RST 位会像任何其他寄存器一样发生更改、因此我预计如果在器件不处于 CRC 模式时将8位 CRC 附加到24位指令(32位帧)、器件将无法识别此指令且不执行任何操作。 因此、我建议您在控制器端向此操作添加一些条件逻辑、以确定器件是否处于 CRC 模式。
此致、
Joel