久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: AD7746的C語言驅動程序 [打印本頁]

作者: youshenglv    時間: 2019-5-18 15:01
標題: AD7746的C語言驅動程序
  1. #define CapDacvalue  4.97

  2. void IIC_Init(void)     
  3. {                                             
  4.         GPIO_InitTypeDef GPIO_InitStructure;
  5.         
  6.         RCC_APB2PeriphClockCmd(        RCC_APB2Periph_GPIOC, ENABLE );      
  7.          
  8.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_11;
  9.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;   
  10.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  11.         GPIO_Init(GPIOC, &GPIO_InitStructure);

  12.         IIC_SCL=1;
  13.         IIC_SDA=1;

  14. }

  15. void IIC_Start(void)
  16. {
  17.         SDA_OUT();     
  18.         IIC_SDA=1;                    
  19.         IIC_SCL=1;
  20.         delay_us(4);
  21.         IIC_SDA=0;
  22.         delay_us(4);
  23.         IIC_SCL=0;
  24. }         
  25. //2úéúIICí£?1D?
  26. void IIC_Stop(void)
  27. {
  28.         SDA_OUT();
  29.         IIC_SCL=0;
  30.         IIC_SDA=0;
  31.         delay_us(4);
  32.         IIC_SCL=1;
  33.         IIC_SDA=1;
  34.         delay_us(4);                                                                  
  35. }

  36. u8 IIC_Wait_Ack(void)
  37. {
  38.         u8 ucErrTime=0;
  39.         SDA_IN();      
  40.         IIC_SDA=1;delay_us(1);         
  41.         IIC_SCL=1;delay_us(1);         
  42.         while(READ_SDA)
  43.         {
  44.                 ucErrTime++;
  45.                 if(ucErrTime>250)
  46.                 {
  47.                         IIC_Stop();
  48.                         return 1;
  49.                 }
  50.         }
  51.         IIC_SCL=0;
  52.         return 0;  
  53. }

  54. void IIC_Ack(void)
  55. {
  56.         IIC_SCL=0;
  57.         SDA_OUT();
  58.         IIC_SDA=0;
  59.         delay_us(2);
  60.         IIC_SCL=1;
  61.         delay_us(2);
  62.         IIC_SCL=0;
  63. }
  64.               
  65. void IIC_NAck(void)
  66. {
  67.         IIC_SCL=0;
  68.         SDA_OUT();
  69.         IIC_SDA=1;
  70.         delay_us(2);
  71.         IIC_SCL=1;
  72.         delay_us(2);
  73.         IIC_SCL=0;
  74. }                                                                              
  75.                     
  76. void IIC_Send_Byte(u8 txd)
  77. {                        
  78.     u8 t;   
  79.         SDA_OUT();            
  80.     IIC_SCL=0;
  81.     for(t=0;t<8;t++)
  82.     {              
  83.         IIC_SDA=(txd&0x80)>>7;
  84.         txd<<=1;           
  85.                 delay_us(2);   
  86.                 IIC_SCL=1;
  87.                 delay_us(2);
  88.                 IIC_SCL=0;      
  89.                 delay_us(2);
  90.     }         
  91. }            

  92. u8 IIC_Read_Byte(unsigned char ack)
  93. {
  94.         unsigned char i,receive=0;
  95.         SDA_IN();
  96.     for(i=0;i<8;i++ )
  97.         {
  98.         IIC_SCL=0;
  99.         delay_us(2);
  100.                 IIC_SCL=1;
  101.         receive<<=1;
  102.         if(READ_SDA)receive++;   
  103.                 delay_us(1);
  104.     }                                         
  105.     if (!ack)
  106.         IIC_NAck();
  107.     else
  108.         IIC_Ack();
  109.     return receive;
  110. }
  111. unsigned char IICWatask2(void)  
  112. {
  113.      unsigned char i=0;
  114.          unsigned char flag=0x01;
  115.      IIC_SCL=0;
  116.      delay_us(2);
  117.      IIC_SDA=1;
  118.      IIC_SCL=1;
  119.      delay_us(6);
  120.     while((IIC_SDA==1)&&(i<250))
  121.       i++;
  122.       flag=IIC_SDA;
  123.       IIC_SCL=0;
  124.     return(flag);
  125.    }

  126. void IICSendask(void)
  127. {
  128.   IIC_SDA=0;
  129.   delay_us(3);
  130.   IIC_SCL=1;
  131.   delay_us(6);
  132.   delay_us(2);
  133.   IIC_SCL=0;
  134.   IIC_SDA=1;
  135.   delay_us(3);
  136. }         
  137. unsigned char IICRECVbyte(void)
  138. {
  139.   unsigned char i;
  140.   unsigned char temp=0;
  141.   IIC_SCL=0;
  142.   IIC_SDA=1;
  143.   for (i=0;i<8;i++)
  144.     {

  145.           IIC_SCL=1;
  146.           delay_us(5);
  147.           temp=temp<<1;
  148.       if(IIC_SDA==1)
  149.             temp=temp|0x01;
  150.           else
  151.             temp=temp&0xfe;
  152.          IIC_SCL=0;
  153.      }
  154.     return(temp);
  155. }



  156. void AD7745_RESET(void)
  157. {
  158.         IIC_Start();
  159.   IIC_Send_Byte(0xBF);
  160.   IIC_Stop();
  161. }

  162. unsigned char SETUP_7745(unsigned char addr,unsigned char value)   
  163. {
  164. unsigned char flag;
  165. flag=0x01;
  166. IIC_Start();
  167. IIC_Send_Byte(0x90);
  168. if(IICWatask2()!=0)
  169.     flag=1;
  170. else
  171.     flag=0;
  172. IIC_Send_Byte(addr);
  173. if(IICWatask2()!=0)
  174.     flag=1;
  175. else
  176.    flag=0;
  177. IIC_Send_Byte(value);
  178. if(IICWatask2()!=0)
  179.     flag=1;
  180. else
  181.     flag=0;
  182. IIC_Stop();
  183.    return(flag);
  184. }

  185. void GET7745value(unsigned char *p,unsigned char n)   
  186. { unsigned char i;
  187.   unsigned char flagw;
  188.   IIC_Start();
  189.   IIC_Send_Byte(0x90);  
  190.   flagw=IICWatask2();
  191.   IIC_Send_Byte(0x01);
  192.   flagw=IICWatask2();
  193.   IIC_Start();
  194.   IIC_Send_Byte(0x91);
  195.   flagw=IICWatask2();
  196.   for(i=0;i<n;i++)
  197.     { *p=IICRECVbyte();
  198.            if(i!=n-1)
  199.               IICSendask();
  200.            else
  201.               IICSendask();
  202.            p++;
  203.           }
  204.    IIC_Stop();
  205.   }


  206. //        #define CapDacvalue  4.
  207. //        capdacreg=(int)((CapDacvalue*0x7F)/17
  208. //  capdacreg=0x80|capdacre
  209. //  AD7745_RESET(
  210. //  SETUP_7745(0x07,0x80
  211. //  SETUP_7745(0x09,0x2B
  212. //  SETUP_7745(0x0A,0xA1
  213. //  SETUP_7745(0x0B,capdacreg);
  214. //        GET7745value(MRD,3);   
復制代碼







歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日本一区二区高清不卡 | 日本成人三级电影 | 亚州中文字幕 | 草草在线观看 | 国产麻豆一区二区三区 | 91高清视频在线观看 | 免费在线日韩 | 国产精品免费看 | 狠狠躁躁夜夜躁波多野结依 | 国产精品海角社区在线观看 | 日韩免费视频 | 亚洲精品大片 | 99亚洲| 免费观看一级毛片 | 日韩国产精品一区二区三区 | 亚洲三级在线观看 | 亚洲一区二区精品视频 | 欧美日韩国产高清 | 国产91丝袜 | 久久久精品国产 | 一级日韩| 国内精品在线视频 | 欧美一区二区三区的 | 精品一区二区三区在线视频 | 日韩视频一区在线观看 | 色婷婷九月 | 午夜久久久久久久久久一区二区 | 99热在这里只有精品 | 日韩精品一区二区久久 | 久久精彩视频 | 中文字幕第一页在线 | 国产精品91久久久久久 | 久久91精品国产一区二区三区 | 夜夜草| 黄色免费看| 黄色在线观看网址 | 最新av在线网址 | www97影院| 日韩字幕 | 久久亚洲一区二区三区四区 | 亚洲欧美日韩国产 |