#include "sys.h"
#include <stm32f10x_lib.h>
#include "5616.h"
#include "delay.h"
void tlv5616_Init(void)
{
RCC->APB2ENR|=1<<3; //使能PORTB时钟
GPIOB->CRH&=0X00F0F0FF;
GPIOB->CRH|=0X33030300;//推挽输出模式、中文手册113页
GPIOB->ODR|=0XD400;
}
//****************tlc5615的驱动程序************************************
//da:要输出的DA值
void tlv5616_da(u16 da)
{
u8 i;
//da<<=4;
u16 set_da;
set_da=da;
set_da=set_da<<4;
tlv5616_cs=0;
tlv5616_clk=1;
tlv5616_fs=0;
for(i=0;i<12;i++)
{
delay_us(2); delay_us(2);
if(set_da & 0x800)
tlv5616_data=1;
else
tlv5616_data=0;
tlv5616_clk=0;
delay_us(2); delay_us(2);
da<<=1;
tlv5616_clk=1;
delay_us(2); delay_us(2);
}
tlv5616_cs=1;
tlv5616_fs=1;
tlv5616_clk=0;
}
#ifndef __5616_H
#define __1616_H
#include "sys.h"
#define tlv5616_clk PBout(10)
#define tlv5616_data PBout(12)
#define tlv5616_cs PBout(14)
#define tlv5616_fs PBout(15)
void tlv5616_da(u16 da);
void tlv5616_Init(void);
#endif
以上是自己写的,发现输出模拟量会直接跳变 从0.1V到3.多伏 有那些高手以前驱动过的,给点建议喂! 给点程序段最好谢谢!!!!!!!再谢谢!!!!!!!!!!!!
|