- #define CapDacvalue 4.97
- void IIC_Init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
-
- RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE );
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_11;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOC, &GPIO_InitStructure);
- IIC_SCL=1;
- IIC_SDA=1;
- }
- void IIC_Start(void)
- {
- SDA_OUT();
- IIC_SDA=1;
- IIC_SCL=1;
- delay_us(4);
- IIC_SDA=0;
- delay_us(4);
- IIC_SCL=0;
- }
- //2úéúIICí£?1D?
- void IIC_Stop(void)
- {
- SDA_OUT();
- IIC_SCL=0;
- IIC_SDA=0;
- delay_us(4);
- IIC_SCL=1;
- IIC_SDA=1;
- delay_us(4);
- }
- u8 IIC_Wait_Ack(void)
- {
- u8 ucErrTime=0;
- SDA_IN();
- IIC_SDA=1;delay_us(1);
- IIC_SCL=1;delay_us(1);
- while(READ_SDA)
- {
- ucErrTime++;
- if(ucErrTime>250)
- {
- IIC_Stop();
- return 1;
- }
- }
- IIC_SCL=0;
- return 0;
- }
- void IIC_Ack(void)
- {
- IIC_SCL=0;
- SDA_OUT();
- IIC_SDA=0;
- delay_us(2);
- IIC_SCL=1;
- delay_us(2);
- IIC_SCL=0;
- }
-
- void IIC_NAck(void)
- {
- IIC_SCL=0;
- SDA_OUT();
- IIC_SDA=1;
- delay_us(2);
- IIC_SCL=1;
- delay_us(2);
- IIC_SCL=0;
- }
-
- void IIC_Send_Byte(u8 txd)
- {
- u8 t;
- SDA_OUT();
- IIC_SCL=0;
- for(t=0;t<8;t++)
- {
- IIC_SDA=(txd&0x80)>>7;
- txd<<=1;
- delay_us(2);
- IIC_SCL=1;
- delay_us(2);
- IIC_SCL=0;
- delay_us(2);
- }
- }
- u8 IIC_Read_Byte(unsigned char ack)
- {
- unsigned char i,receive=0;
- SDA_IN();
- for(i=0;i<8;i++ )
- {
- IIC_SCL=0;
- delay_us(2);
- IIC_SCL=1;
- receive<<=1;
- if(READ_SDA)receive++;
- delay_us(1);
- }
- if (!ack)
- IIC_NAck();
- else
- IIC_Ack();
- return receive;
- }
- unsigned char IICWatask2(void)
- {
- unsigned char i=0;
- unsigned char flag=0x01;
- IIC_SCL=0;
- delay_us(2);
- IIC_SDA=1;
- IIC_SCL=1;
- delay_us(6);
- while((IIC_SDA==1)&&(i<250))
- i++;
- flag=IIC_SDA;
- IIC_SCL=0;
- return(flag);
- }
- void IICSendask(void)
- {
- IIC_SDA=0;
- delay_us(3);
- IIC_SCL=1;
- delay_us(6);
- delay_us(2);
- IIC_SCL=0;
- IIC_SDA=1;
- delay_us(3);
- }
- unsigned char IICRECVbyte(void)
- {
- unsigned char i;
- unsigned char temp=0;
- IIC_SCL=0;
- IIC_SDA=1;
- for (i=0;i<8;i++)
- {
- IIC_SCL=1;
- delay_us(5);
- temp=temp<<1;
- if(IIC_SDA==1)
- temp=temp|0x01;
- else
- temp=temp&0xfe;
- IIC_SCL=0;
- }
- return(temp);
- }
- void AD7745_RESET(void)
- {
- IIC_Start();
- IIC_Send_Byte(0xBF);
- IIC_Stop();
- }
- unsigned char SETUP_7745(unsigned char addr,unsigned char value)
- {
- unsigned char flag;
- flag=0x01;
- IIC_Start();
- IIC_Send_Byte(0x90);
- if(IICWatask2()!=0)
- flag=1;
- else
- flag=0;
- IIC_Send_Byte(addr);
- if(IICWatask2()!=0)
- flag=1;
- else
- flag=0;
- IIC_Send_Byte(value);
- if(IICWatask2()!=0)
- flag=1;
- else
- flag=0;
- IIC_Stop();
- return(flag);
- }
- void GET7745value(unsigned char *p,unsigned char n)
- { unsigned char i;
- unsigned char flagw;
- IIC_Start();
- IIC_Send_Byte(0x90);
- flagw=IICWatask2();
- IIC_Send_Byte(0x01);
- flagw=IICWatask2();
- IIC_Start();
- IIC_Send_Byte(0x91);
- flagw=IICWatask2();
- for(i=0;i<n;i++)
- { *p=IICRECVbyte();
- if(i!=n-1)
- IICSendask();
- else
- IICSendask();
- p++;
- }
- IIC_Stop();
- }
- // #define CapDacvalue 4.
- // capdacreg=(int)((CapDacvalue*0x7F)/17
- // capdacreg=0x80|capdacre
- // AD7745_RESET(
- // SETUP_7745(0x07,0x80
- // SETUP_7745(0x09,0x2B
- // SETUP_7745(0x0A,0xA1
- // SETUP_7745(0x0B,capdacreg);
- // GET7745value(MRD,3);
复制代码
|