stm32-dac8532共同開発ネットワークルーチンは、DAC8532仕様の書き込みタイミングが実際にはビット信号の立ち下がりエッジコレクションであることを証明します。また、8532の個人テストによっても証明されます。

  1. #include "dac8532.h"   
  2. #include "stm32f10x_lib.h"   
  3. #include "stm32f10x_conf.h"   
  4. #include "delay.h"   
  5.    
  6. #define DAC8532_PORT GPIOA   
  7. #define DAC8532_SCL GPIO_Pin_1 // SCL   
  8. #define DAC8532_SDA GPIO_Pin_0 // DIN   
  9. #define DAC8532_SYNC GPIO_Pin_2 // SYNC   
  10.    
  11. #define DAC8532_SCL_1 GPIO_SetBits(DAC8532_PORT、DAC8532_SCL)   
  12. #define DAC8532_SCL_0 GPIO_ResetBits(DAC8532_PORT、DAC8532_SCL)   
  13. #define DAC8532_SDA_1 GPIO_SetBits(DAC8532_PORT、DAC8532_SDA)   
  14. #define DAC8532_SDA_0 GPIO_ResetBits(DAC8532_PORT、DAC8532_SDA)   
  15. #define DAC8532_SYNC_1 GPIO_SetBits(DAC8532_PORT、DAC8532_SYNC)   
  16. #define DAC8532_SYNC_0 GPIO_ResetBits(DAC8532_PORT、DAC8532_SYNC)   
  17.    
  18. void InitDAC8532GPIO(void)   
  19. {{   
  20.     GPIO_InitTypeDef GPIO_InitStructure;   
  21.    
  22.     GPIO_InitStructure.GPIO_Pin = DAC8532_SCL | DAC8532_SDA | DAC8532_SYNC;   
  23.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   
  24.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   
  25.     GPIO_Init(DAC8532_PORT、&GPIO_InitStructure);   
  26.        
  27.     DAC8532_SYNC_1;    
  28.     DAC8532_SCL_1;   
  29. }   
  30. static void WriteDAC8532Bit0(void)   
  31. {{   
  32.     DAC8532_SCL_1;   
  33.     delay_us_sys(1); //ʱ Ӹ̵ ƽ   
  34.     DAC8532_SDA_0; // Ч   
  35.     delay_us_sys(1); // ׼   
  36.     DAC8532_SCL_0; // ½   
  37.     delay_us_sys(2); //   
  38.     //һ bitΪһ Ϊ4us ķ   
  39. }   
  40. static void WriteDAC8532Bit1(void)   
  41. {{   
  42.     DAC8532_SCL_1;   
  43.     delay_us_sys(1); //ʱ Ӹ̵ ƽ   
  44.     DAC8532_SDA_1; // Ч   
  45.     delay_us_sys(1); // ׼   
  46.     DAC8532_SCL_0; // ½   
  47.     delay_us_sys(2); //   
  48.     //һ bitΪһ Ϊ4us ķ   
  49. }   
  50. static void WriteDAC8532Byte(u8 byteV)   
  51. {{   
  52.     int i;   
  53.     for(i = 0; i <8; i ++)   
  54.     {{   
  55.         if((byteV&0x80)== 0)   
  56.         {{   
  57.             WriteDAC8532Bit0();   
  58.         }   
  59.         そうしないと   
  60.         {{   
  61.             WriteDAC8532Bit1();   
  62.         }   
  63.         byteV << = 1;   
  64.     }   
  65. }   
  66. void WriteDAC8532(u16 val)   
  67. {{   
  68.     u8 byteH =(u8)(val >> 8);   
  69.     u8 byteL =(u8)(val);   
  70.     u8 byteCtrl = 0x10;   
  71.     //ͬ λ Ч   
  72.     delay_us_sys(1);   
  73.     DAC8532_SYNC_1;   
  74.     delay_us_sys(1);   
  75.     DAC8532_SYNC_0;   
  76.     delay_us_sys(1);   
  77.     //д ֽ   
  78.     WriteDAC8532Byte(byteCtrl);   
  79.     //д ֽ   
  80.     WriteDAC8532Byte(byteH);   
  81.     //д ֽ   
  82.     WriteDAC8532Byte(byteL);   
  83.     //   
  84.     DAC8532_SYNC_1;   
  85.     delay_us_sys(1);   
  86.     DAC8532_SCL_1;   
  87. }   

おすすめ

転載: blog.csdn.net/qq_25814297/article/details/108681399