关于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);
}
//#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);
}
没人 自己弄不懂 还找不到人解答