资源简介
DAC8563的程序源码,使用STM32驱动
代码片段和文件信息
#include “stm32f10x.h“
#include “dac.h“
#include “timer.h“
#include
uint16_t DAC_Data[2] = {00};
void DelayUS(uint16_t delay_time)
{
unsigned long j;
while(delay_time--)
{
j=12;
while(j--);
}
}
void DelayMS(uint16_t delay_time)
{
while(delay_time--)
DelayUS(1030);
}
//======================================
//
// ADC管脚配置
//
//======================================
void DAC_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOD ENABLE); // LED
// CLK
GPIO_InitStructure.GPIO_Pin = SPI_ADS_CLK_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(SPI_ADS_CLK_PORT &GPIO_InitStructure);
// MOSI
GPIO_InitStructure.GPIO_Pin = SPI_ADS_MOSI_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(SPI_ADS_MOSI_PORT &GPIO_InitStructure);
// CS1
GPIO_InitStructure.GPIO_Pin = SPI_ADS_CS1_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(SPI_ADS_CS1_PORT &GPIO_InitStructure);
// CS2
GPIO_InitStructure.GPIO_Pin = SPI_ADS_CS2_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(SPI_ADS_CS2_PORT &GPIO_InitStructure);
// CS3
GPIO_InitStructure.GPIO_Pin = SPI_ADS_CS3_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(SPI_ADS_CS3_PORT &GPIO_InitStructure);
// CS4
GPIO_InitStructure.GPIO_Pin = SPI_ADS_CS4_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(SPI_ADS_CS4_PORT &GPIO_InitStructure);
SPI_ADS_CS1(1); // 其他芯片片选
SPI_ADS_CS2(1);
SPI_ADS_CS3(1);
SPI_ADS_CS4(1); // DAC片选
}
//=====================================
//
// 写8位数据
//
//=====================================
void SPI_ADS_SendByte(uint8_t byte)
{
int i;
for(i=0; i<8; i++)
{
SPI_ADS_CLK(1);
DelayUS(4);
if((byte & 0x80)>>7)
SPI_ADS_MOSI(1);
else
SPI_ADS_MOSI(0);
SPI_ADS_CLK(0);
DelayUS(4);
byte <<= 1;
}
}
//=====================================
//
// 写16位数据
//
//=====================================
void SPI_ADS_SendHalfWord(uint16_t byte)
{
int i;
for(i=0; i<16; i++)
{
SPI_ADS_CLK(1);
DelayUS(4);
if((byte & 0x8000)>>15)
SPI_ADS_MOSI(1);
else
SPI_ADS_MOSI(0);
SPI_ADS_CLK(0);
DelayUS(4);
byte <<= 1;
}
}
//=====================================
//
// 写寄存器
//
//=====================================
void DAC_WR_REG(uint8_t cmd_byte uint16_t data_byte)
{
// SPI_ADS_CLK(1);
// SPI_ADS_CLK(0);
SPI_ADS_CS4(0);
SPI_ADS_SendByte(cmd_byte);
SPI_ADS_SendHalfWord(data_byte);
SPI_ADS_CS4(1);
DelayUS(4);
}
//=============================================
//
// 设置并更新DAC输出
//
// 参数:data_a为A路输出,data_b为B路输出
//
//=============================================
void DAC_Output1(
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3368 2013-04-28 10:09 dac.h
文件 4821 2013-05-28 18:42 dac.c
----------- --------- ---------- ----- ----
8189 2
评论
共有 条评论