微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于AD5262的驱动问题,刚刚接触STM32,想写一个AD5262的程序,写不出来

关于AD5262的驱动问题,刚刚接触STM32,想写一个AD5262的程序,写不出来

时间:10-02 整理:3721RD 点击:
这是我的程序,大神看看问题在哪
//#include "stm32f13.h"
#include "AD5262.h"
#include "sys.h"
#include "delay.h"
void ad5262_Init(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
         
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOB, ENABLE);        //使能USART1,GPIOA时钟
        USART_DeInit(USART1);  //复位串口1
       
         //USART1_TX   PB.8
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //PB.8
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //复用推挽输出
    GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化PA9
       
    //USART1_RX          PB.9
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出
    GPIO_Init(GPIOB, &GPIO_InitStructure);  //初始化PA10
       
        //USART1_RX          PB.10
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出
    GPIO_Init(GPIOB, &GPIO_InitStructure);  //初始化PA10
       
        //USART1_RX          PB.11
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出
    GPIO_Init(GPIOB, &GPIO_InitStructure);  //初始化PA10
       
        CLK=0;                                                        //时钟空闲低电平
        CS=1;                                                        //片选无效
}
void Write_To_AD5262(u8 addr,u8 data)
{
       
        u8 A0,i=0,DATA;
        DATA=data;
        A0=addr&0x01;
        CS=0;                //CS有效
//         delay_us(5);
        if(A0)                         //0:RDAC1 1:RDAC2
        {
                SDI=1;
        }
        else
        {
                SDI=0;
        }
//         CLK=1;
//         delay_us(5);
//         CLK=0;
        for(i=0;i<8;i++)
        {
                CLK=1;
                if(DATA&0x80)                 //MSB
                {
                        SDI=1;
                }
                else
                {
                        SDI=0;
                }
               
                CLK=0;
                DATA=DATA<<1;
//                 delay_us(5);  
        }
        CS=1;                                       
}
void Resist_Config( u16 res_value )                                        // res_value=RWB
{
        u8 value;   
        if(res_value<60)                                                                       
                res_value=60;
        if(res_value>19950)
                res_value=19950;
        value=(res_value-60)/78;                                                        // RWB=RAB/256+RW=78N+60
        Write_To_AD5262(0,value);                                                 // value=N
}
void AD5262_Init(u16 res)
{
//         AD5262_GPIO_Config();
//         CLK=0;                                                        //时钟空闲低电平
//         CS=1;                                                        //片选无效
        Write_To_AD5262(0,0x80);
//         Write_To_AD5262(0,0xB0);       
        Resist_Config(res);
}

没人  自己弄不懂  还找不到人解答

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top