读出来的值一直是最大值 怎么调节输入都没用 读数一直不变一直是0x7fff 我用的是4.096V的量程 他一直显示4.096V 不知道是不是SPI的时序有问题
SPI读写如下:
/************************************************************
*函数名称: Write_SIP(unsigned int temp)
*功能描述: 向ADS118写入配置寄存器值,并且读回AD数值
*入口参数: temp (写入配置寄存器)
*返回数值: Read_Data
* 说 明 :根据时序图,前16位读的是AD转换数值 后16位读回的配置寄存器
**************************************************************/
unsigned int Write_SIP(unsigned int temp)
{
char i;
unsigned int Read_Data;
Data_Out; //设置输出 DIN -->对应(SOMI)
Data_In; //设置数据输入 Dout-->对应(SOMO);
CLK_L;
for(i=0;i<16;i++) //只有在时钟上升沿时数据被锁存,为控制器通过下降沿读取数据
{
if((temp&0x8000)==0x8000) { DOUT_H;}
else { DOUT_L;}
temp<<=1;
CLK_H;
Read_Data<<=1;
if(DIN){Read_Data++;}
CLK_L;
}
DOUT_L;
_NOP();
return Read_Data;
}
麻烦大神帮着看下是不是有问题
你就发这些代码,让别人给你解答,,,,,让别人把全部代码给你。。。。
再说,若速率要求较高,建议用硬件spi 官方例子,写的很清楚
正在尝试硬件SPI 有例程吗 能发一份我参考下吗 多谢了