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.
我的代码不起作用,问题出在哪?
void DAC2_set (U16值)
{
字符 I;
DAC_CS1_L;
for (i=8;i>0;i--)
{
DAC_DIN_L;
DELAY_us (1);
DAC_SCLK_H;
DELAY_us (1);
DAC_SCLK_L;
}
for (i=16;i>0;i--)
{
if (值0x8000)
{
DAC_DIN_H;
DELAY_us (1);
}
其他
{
DAC_DIN_L;
DELAY_us (1);
}
DAC_SCLK_H;
DELAY_us (1);
DAC_SCLK_L;
值<<= 1;
}
DAC_CS1_H;
}
您好!
您能否详细说明您面临的问题? 我无法理解您的代码段中的任何内容。
此致、
AK
您好!
您能否向我发送范围内的通信照片?
根据您的代码片段、您将发送0x8000作为 DAC _DATA、对吧? 由于该器件数据寄存器为24位宽、头6位无关、接下来的2位为 PD1和 PD0、用于控制断电或正常模式运行(在这种情况下、您应该将这些位设置为00)、然后是16位 DAC_DATA。
您能向我解释一下您在此步骤中所做的工作吗?
void DAC2_set (U16值)
{
字符 I;
DAC_CS1_L;
for (i=8;i>0;i--)
{
DAC_DIN_L;
DELAY_us (1);
DAC_SCLK_H;
DELAY_us (1);
DAC_SCLK_L;
}
尝试向 DAC 发送24位数据、而不是像我从代码中了解的那样将数据分成8位和16位。
此致、
AK
这部分代码是前8个字节,、接下来的16个字节由值发送。
你(们)好
我没有任何要共享的示例代码。 您能否向我提供您的 SPI 通信示波器快照?
要检查一切是否正常、您能否验证您的电源电平和基准电压?
另外、尝试读回一些默认寄存器以验证接口是否正常。
此致、
AK
您好!
看一下示波器快照、我感觉您的同步线路在第24个 SCLK 下降沿之前被提升到高电平? 您是否可以延长同步低电平时间,是否可以再延长一个时钟?
此外、如果这不起作用、您是否也可以检查其他 SPI 模式。
SPI 模式 |
CPOL |
CPHA |
时钟极性 |
用于对数据进行采样的时钟相位 |
1 |
0 |
1 |
逻辑低电平 |
在下降沿采样数据 |
2. |
1 |
1 |
逻辑高电平 |
在下降沿采样数据 |
此致、
AK
我在 SYNC 线路变为高电平之前添加了10us 延迟。 现在它工作正常。 谢谢!
您好!
很高兴知道您的问题已得到解决。 我要关闭此主题。
此致、
AK