主题中讨论的其他器件:DAC81408、 USB2ANY、 DAC80508EVM
写入 DAC81408上的配置寄存器时遇到问题。 我可以读取寄存器、但无法写入。
例如、当我通过 SPI 接口发送命令0x83000000时、我可以读取(SPIC为此 寄存器)
数据返回为0xXX0AA4XX。 当我发送命令0x030A84000时、我希望将"0A84"写入
但它没有。 我读回的数据仍然是"0AA4"。 我应该做什么来启用写入
寄存器的位?
圈
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.
写入 DAC81408上的配置寄存器时遇到问题。 我可以读取寄存器、但无法写入。
例如、当我通过 SPI 接口发送命令0x83000000时、我可以读取(SPIC为此 寄存器)
数据返回为0xXX0AA4XX。 当我发送命令0x030A84000时、我希望将"0A84"写入
但它没有。 我读回的数据仍然是"0AA4"。 我应该做什么来启用写入
寄存器的位?
圈
尊敬的 Paul:
我正在使用 TI C2000 Delfino MCU F28379D LaunchPad开发套件生成 SPI 信号。 我可以成功
控制 DAC80508EVM。 但是、一旦我更改为 DAC81408EVM、我就无法写入配置寄存器。
下图描述了我通过 SPI 发送的两条命令:
SpiaRegs.SPITXBUF = 0x8300; //对 SPICCCST 寄存器执行读取操作(第一个访问周期)
SpiaRegs.SPITXBUF = 0x0000; // 32位数据的后半部分
while (SpiaRegs.SPIFFRX.bit.RXFFST!= 2){} //两个字已接收->完成
*rr = SpiaRegs.SPIRXBUF; //删除第一个收到的字
*(Rr+1)= SpiaRegs.SPIRXBUF; //删除收到的第二个字
SpiaRegs.SPITXBUF = 0x8300; //对 SPICCC1寄存器执行读取操作(第二个访问周期)
SpiaRegs.SPITXBUF = 0x0000; // 32位数据的后半部分
while (SpiaRegs.SPIFFRX.bit.RXFFST!= 2){}//两个字已接收->完成
*rr = SpiaRegs.SPIRXBUF; //删除第一个收到的字
*(Rr+1)= SpiaRegs.SPIRXBUF; //删除收到的第二个字
我从读取操作(第二个访问周期)获取的数据为0x800AA483。 "0A4"是 SPIC为此 寄存器设置的默认数据。 其中一个
问题是、我期望获得0x830AA4XX、而不是0x800AA4XX (X:无关)。 另一个问题是我使用的是24位 SPI 访问
但 LaunchPad 套件仅允许发送16位数据(我是对的吗?)。 因此、我发送两个16位数据、DAC 应自动忽略最后一个数据
8位数据。
现在、如果我将写入操作0x030A8400发送到 DAC、SPIC2010寄存器仍然是"0AA4"而不是"0A84"。 我认为这可能是24位/32位
访问问题。 请帮助。
谢谢你。
圈
您好、
您最初是如何配置器件的? 我的同事 Uttam 有一个简单的分步器件初始化:
https://e2e.ti.com/support/data-converters/f/73/t/832194
例如、如果器件仍处于断电模式或未启用基准、则不会看到输出。 还必须注意(由于数据表不正确、更重要的是) DAC 寄存器是只写的。 您无法读回 DAC 寄存器。 这是我们已经确定的一个拼写错误、我们目前正在更新数据表(可能需要几周时间)。