不知为啥SDO口数据一直不正常,是不是我程序写的有问题,请帮看一下,我用的Keil4编程软件,控制器是stm32单片机。
端口定义:
#define SCO PBin(4) //在单片机看来是输入,AD是输出
#define SDI PCout(12) //在单片机看来是输出,AD是输入
#define FSI PCout(11)
#define FSO PBin(3)
#define RSET PCout(10)
#define PA0 PAout(0)
#define SYNC PAout(15)
#define SDO GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_2)
#define OVE GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)
//初始化
RSET = 0;
delay_us(1);
RSET = 1;
FSI =1;
//写函数
void ADC_Write_oneword(uint16_t address,uint16_t wrdata)
{
u8 i,j;
FSI = 1;
FSI = 0;
for(i=0;i<16;i++)
if(address&0x8000)
SDI = 1;
else
SDI = 0;
address<<=1;
}
for(j=0;j<16;j++)
if(wrdata&0x8000)
wrdata<<=1;
7765控制寄存器的D13是ReadGain,是不是把这一位置一以后,SDO就有数据输出了?
不知怎的,FSO一直没有拉低过,显然是没有数据输出吧,不知究竟是怎么读数据的,求指点,另外,我板子上这些与单片机相连的AD口都忘了加0r的电阻(其他地方有),会不会有影响呢。如不吝赐教,十分感谢!
您好!
建议您回读寄存器试一下。回读寄存器值,需要置低FSI,然后通过SDI写入地址和回读操作,拉高FSI后经过8×tsco,FSO输出会变低电平,随后SDO输出寄存器值。首先应确定FSI,SDI操作是否按照数据手册中表3时序要求进行操作。还有要注意的是电源,地,参考输入,MCLK,RESET等基本输入信号是否正常。此外,您也可以换一片芯片试一下。
AD7765是主机,STM32要设置成从机。