主题中讨论的其他器件: DRV8316
工具与软件:
我正在开发一个原型、以将 MCT8316Z0R 集成到伺服应用中。 为了确保能够使用 SPI 正确配置 MCT8316Z0R、我有一个非常简单的设置、即为 MCT8316提供 VM/PGND (8.4V)、nSLEEP 保持高电平、nFAULT 保持高电平、并且按照数据表连接降压稳压器和电荷泵。 SPI 连接到 Arduino 处理器、其 SPI 设置为5MHZ 时钟速率、时钟极性0和时钟相位1。
首先、我将03h 写入控制寄存器1以解锁寄存器。 此步骤的日志如下:
解锁寄存器(控制寄存器1 (偏移3h))
写入偏移3输出数据字0 000011 0 00000011返回00000000 00000000
读取控制寄存器1 (偏移3h)
读取偏移3输出数据字1 000011 0 00000000返回00000000 00000011
这表明写入和读取工作正常。 状态寄存器2显示"电荷泵欠压"故障、因此我写入控制寄存器2A 以清除故障:
读取状态寄存器2 (偏移2h)
读取偏移2输出数据字1 000010 1 00000000返回00000000 10001000
清除故障(C2A (偏移4))
写入偏移4输出数据字0 000100 0 00000001返回00000000 01100000
读取状态寄存器2 (2)
读取偏移2输出数据字1 000010 1 00000000返回00000000 00000000
然而、在这个写入后、所有控制寄存器返回0:
检查控制寄存器复位值->
读取 C2A (4)
读取偏移4输出数据字1 000100 1 00000000返回00000000 00000000
返回值为十六进制0
读取 C3 (5)
读取偏移5输出数据字1 000101 0 00000000返回00000000 00000000
返回值为十六进制0
读取 C4 (6)
读取偏移6输出数据字1 000110 0 00000000返回00000000 00000000
返回值为十六进制0
读取 C7 (9)
读取偏移9输出数据字1 001001 0 00000000返回00000000 00000000
返回值为十六进制0
如果我没有清除故障、则读取上述寄存器会返回大多数合理的复位值:
检查控制寄存器复位值->
读取 C2A (4)
读取偏移4输出数据字1 000100 1 00000000返回00000000 01100000
返回值为十六进制60
读取 C3 (5)
读取偏移5输出数据字1 000101 0 00000000返回00000000 01000110
返回、采用十六进制46
读取 C4 (6)
读取偏移6输出数据字1 000110 0 00000000返回00000000 00010000
返回值为十六进制10
读取 C7 (9)
读取偏移9输出数据字1 001001 0 00000000返回00000000 00000001
返回值、采用十六进制1
我还会注意到、我无法生成任何 SPI 故障。 我曾尝试使用各种故障 SPI 结构(地址错误、奇偶校验错误)、但无法在状态寄存器中触发故障。
最后、如果未在上述第一步中解锁寄存器、则所有写入都会返回复位值并且不会观察到任何变化。 如果你能提供一些见解,我会非常感谢,因为这是相当令人沮丧。