单片机解密AD9832的MCU驱动程序
单片机解密单片机源程序如下:
- #include "ad9832.h"
- #define AD_RESET 0xd000
- #define AD_Fre0_LLSBs 0x3000
- #define AD_Fre0_HLSBs 0x2100
- #define AD_Fre0_LMSBs 0x3200
- #define AD_Fre0_HMSBs 0x2300
- #define AD_Fre1_LLSBs 0x3400
- #define AD_Fre1_HLSBs 0x2500
- #define AD_Fre1_LMSBs 0x3600
- #define AD_Fre1_HMSBs 0x2700
- #define AD_PHA0_LSBs 0x1800
- #define AD_PHA0_MSBs 0x0900
- #define AD_Set_FSelect 0x9000
- #define AD_RegGroup 0x6000
- #define AD_start 0xc000
- void ad9832_io_init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能PA端口时钟
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
- GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化GPIOA
- GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5); //PB.5 输出高
- }
- //向AD9832写入16bit数据
- void byte_shift(unsigned int data_16)
- {
- u8 i;
- unsigned int temp;
- ad9832_fsync=1;
- ad9832_sclk=1;
- delay_us(5);
- ad9832_fsync=0;
- delay_us(5);
- for(i=0;i<16;i++)
- {
- ad9832_sdata=(data_16&0x8000)>>15;
- data_16<<=1;
-
- ad9832_sclk=0;
- delay_us(5);
- ad9832_sclk=1;
- delay_us(5);
- }
- ad9832_fsync=1;
- delay_us(5);
- }
- void ad9832_init(void)
- {
- byte_shift(0xf800); //清除设置,复位
-
- byte_shift(0x8000); //频率输出选用 对应引脚而不是寄存器值
- //phase //相位寄存器设定
- //0001 1000 phase0 LSBS
- //0000 1001 phase0 MSBS
- //0001 1010 phase1 LSBS
- //0000 1011 phase1 MSBS
- //0001 1100 phase2 LSBS
- //0000 1101 phase2 MSBS
- //0001 1110 phase3 LSBS
- //0000 1111 phase3 MSBS
- // byte_shift(0x1800);
- // byte_shift(0x0900);
- // byte_shift(0x1a00);
- // byte_shift(0x0b00);
- // byte_shift(0x1c00);
- // byte_shift(0x0d00);
- // byte_shift(0x1e00);
- // byte_shift(0x0f00);
-
- byte_shift(0xc000);
- }
- //设置 频率寄存器参数
- void ad9832_fre_config(float freq0,float freq1)
- {
- u32 FREQ_REG0,FREQ_REG1;
-
- freq0/=8000000;
- freq0*=65536.0;
- freq0*=65536.0;
- freq1/=8000000;
- freq1*=65536.0;
- freq1*=65536.0;
-
- FREQ_REG0=(u32)(freq0+0.5);
- FREQ_REG1=(u32)(freq1+0.5);
-
- byte_shift(0xf800);
- // byte_shift(0x9000);
-
- byte_shift((u16)(AD_Fre0_LLSBs|(FREQ_REG0&0x00ff)));
- byte_shift((u16)(AD_Fre0_HLSBs|(FREQ_REG0>>8&0x00ff)));
- byte_shift((u16)(AD_Fre0_LMSBs|(FREQ_REG0>>16&0x00ff)));
- byte_shift((u16)(AD_Fre0_HMSBs|(FREQ_REG0>>24&0x00ff)));
-
- byte_shift((u16)(AD_Fre1_LLSBs|(FREQ_REG1&0x00ff)));
- byte_shift((u16)(AD_Fre1_HLSBs|(FREQ_REG1>>8&0x00ff)));
- byte_shift((u16)(AD_Fre1_LMSBs|(FREQ_REG1>>16&0x00ff)));
- byte_shift((u16)(AD_Fre1_HMSBs|(FREQ_REG1>>24&0x00ff)));
-
- // byte_shift(0x1800);
- // byte_shift(0x0900);
- // byte_shift(0x6000);
- byte_shift(0x8000);
- byte_shift(0xc000);
- // byte_shift(AD_PHA0_MSBs);
- }

芯片解密