資源簡(jiǎn)介
基于STM32的DAC8552的驅(qū)動(dòng)程序,DAC8554和這個(gè)一樣,已經(jīng)調(diào)試了

代碼片段和文件信息
/**
??******************************************************************************
??*?@file????bsp_dac8552.c
??*?@author??張超凡
??*?@version?V1.0
??*?@date????
??*?@brief???DAC8552驅(qū)動(dòng)程序
*
??*/
?/*******************************調(diào)試信息*************************************************
*??模擬了三個(gè)spi通信。一紅有6個(gè)通道,編號(hào)從?0-5?。
*??為保證輸出的精度,有兩種辦法:1、用最小二乘法擬合直線(xiàn)。2、用分段線(xiàn)性插值。
*??
*??
*??增加了延時(shí)
*
*
*
*******************************************************************************/
#include?“stm32f4xx.h“
#include?“bsp_dac8552.h“
#include?“stm32f4xx_conf.h“
#include?“delay.h“
static?void?DAC8552_0_SPI_Write(?unsigned?int?code);
static?void?DAC8552_1_SPI_Write(?unsigned?int?code);
static?void?DAC8552_2_SPI_Write(?unsigned?int?code);
static?void?DAC8552_delay(void);
void?DAC8552_Init()
{
unsigned?char?i?=?0;
GPIO_InitTypeDef??GPIO_InitStructure;
??
DAC8552_RCC_GPIOClockCmd();?//使能端口引腳端口時(shí)鐘
GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType?=?GPIO_OType_PP;//推挽輸出 ?
GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Pin?=?DAC8552_0_SYNC_Pin?; ?//?端口配置
GPIO_Init(DAC8552_0_SYNC_Port?&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin?=?DAC8552_0_SCLK_Pin;
GPIO_Init(DAC8552_0_SCLK_Port?&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin?=?DAC8552_0_DIN_Pin;
GPIO_Init(DAC8552_0_DIN_Port?&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin?=?DAC8552_1_SYNC_Pin?; ?//?端口配置
GPIO_Init(DAC8552_1_SYNC_Port?&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin?=?DAC8552_1_SCLK_Pin;
GPIO_Init(DAC8552_1_SCLK_Port?&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin?=?DAC8552_1_DIN_Pin;
GPIO_Init(DAC8552_1_DIN_Port?&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin?=?DAC8552_2_SYNC_Pin?; ?//?端口配置
GPIO_Init(DAC8552_2_SYNC_Port?&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin?=?DAC8552_2_SCLK_Pin;
GPIO_Init(DAC8552_2_SCLK_Port?&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin?=?DAC8552_2_DIN_Pin;
GPIO_Init(DAC8552_2_DIN_Port?&GPIO_InitStructure);
for(i?=?0;i?<5;i?++)
{
DAC8552_SetVoltage(i0);
}
}
static?void?DAC8552_delay(void)
{
int?x?=?10;
??while(--x);
}
void?DAC8552_SetVoltage(?unsigned?char?channelunsigned?int?code)??//通道一共6個(gè)(0-5),一個(gè)芯片有兩個(gè)通道???data是一個(gè)24位的數(shù)據(jù)STM32中int型是32位的數(shù)據(jù)
{
??unsigned?int?data?=?0;
unsigned?char?chip;
??if(?code?>?65535?|?channel?>?5)
return?;
chip?=??channel?>>?1;
(channel%2?==?0)???(data?=?0x100000?|?code)?:?(data?=?0x240000?|?code)?????;?//通道有?chip0?:?0?1??chip1?:?2?3?chip2?:?4?5?偶數(shù)通道0?奇數(shù)通道一
switch(?chip)
{
case?0?:
{
DAC8552_0_SPI_Write(data);
break;
}
case?1?:
{
DAC8552_1_SPI_Write(data);
break;
}
case?2?:
{
DAC8552_2_SPI_Write(data);
break;
}
}
}
static?void?DAC8552_1_SPI_Write(?unsigned?int?code)
{
char?i=0;
??unsigned?int?data?=?code;
DAC8552_1_SYNC?=?1;
DAC8
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????目錄???????????0??2017-05-24?15:40??dac8552\
?????文件????????4436??2017-05-24?15:40??dac8552\bsp_dac8552.c
?????文件????????1694??2017-05-24?15:40??dac8552\bsp_dac8552.h
評(píng)論
共有 條評(píng)論