pga2311的通信方式是SPI模式吗?
这是我们编的,为什么没有信号
void SPI_write(uint date)
{
char i;
pga2311_scl=0;
pga2311_cs=0;
for (i=0;i<16;i++)
{
if (date & 0x8000)
{
pga2311_sda=1;
delay_us(5);
}
else
{
pga2311_sda=0;
delay_us(5);
}
date <<=1;
delay_us(5);
pga2311_scl=1;
delay_us(5);
pga2311_scl=0;
delay_us(5);
}
pga2311_scl=0;
delay_us(5);
pga2311_cs=1;
delay_us(5);
}
你好:
你的SPI的SCL时钟有变化吗?我看你的代码中只有数据在变化。
有啊,pga2311-scl有变化的。
给2311下程序的时候模拟电源要不要接上啊?
需要的。你拿示波器看下你的SPI是不是满足了时序要求。
好的
我们测了,连7脚串行数据输出都有信号,但就是输出没有
我们是用波形发生器产生的正弦波1khz,0.3vpp,但是输出的都是杂波
我们直接是用杜邦线连的,没有加电源滤波电容应该没有影响。。。。
下面是spi写函数(for循环中已经有了sclk的变化)
void SPI_write(uint date)
{
char i;
pga2311_sclk=0;
pga2311_cs=0;
for (i=0;i<16;i++)
{
if (date & 0x8000)
{
pga2311_sdi=1;
delay_us(5);
}
else
{
pga2311_sdi=0;
delay_us(5);
}
pga2311_sclk=1;
delay_us(5);
pga2311_sclk=0;
delay_us(5);
date <<=1;
delay_us(5);
}
pga2311_sclk=0;
delay_us(5);
pga2311_cs=1;
delay_us(5);
}
你好:
你的SPI代码之前有用过吗?建议先试试硬件的SPI开能不能工作,来看是芯片的问题还是软件的问题。
您这问题最终解决了吗?问题出现在哪里啊?!