主题中讨论的其他器件:LM2841、
尊敬的先生:
我计划使用 DAC161S997将 SPI 数据传输到4-20mA 输出,我几乎使用典型的应用圈。 只需更改 LDO 即可切换 LM2841的电源。 现在我可以使用 UART 与 MCU 进行通信,但当我向 DAC 发送命令时,无法从 DAC 获得正确的答案。 我使用模拟 SPI 功能。 下面的代码,请。 请帮我回顾一下,如果您能给我一些建议,我将不胜感激。
当我运行测试()时,只能从 DAC 获得“FF”、“FF”、“FF”。
/*从 SPI 读取1位。 返回数据*/
U8 SpiReadByte (空)
{
U8 I、rByte=0;
SCLK=0;
for (i=0;i<8;i++)
{
SCLK=1;
rByte<<=1;
rByte|=MISO;
SCLK=0;
}
返回 rByte;
}
/*SPI 发送1位*/
void SpiSendByte (u8 dt)
{
U8 I;
for (i=0;i<8;i++)
{
SCLK=0;
if (dt <<i)&0x80)
MOSI=1;
其他
{
MOSI=0;
}
SCLK=1;
}
SCLK=0;
}
空测试()
{
U8 outData[3]、I;
CS_DAC = 0;
outData[0]= 0x04;
outData[1]=数据>> 8;
outData[2]=数据& 0xff;
对于(i=0;i<3;i++)
{
SpiSendByte (outData[i]);
delay_ms (20);
}
delay_ms (2);
SpiSendByte (0x89);
W[0]= SpiReadByte ();
SpiSendByte (0xff);
w[1]=SpiReadByte();
SpiSendByte (0xff);
w[2]=SpiReadByte();
CS_DAC = 1
}