【原创】TLV5618芯片驱动程序

/**

******************************************************************************

* @file    T_TLV5618.h

* @author  LuJ

* @version V3.5.0

* @date    2015-03-31

* @brief   DAC头文件管理

******************************************************************************

* (C) Copyright Vango Technoglogy, Inc. 2015

******************************************************************************

*/

#ifndef __T_TLV5618_H

#define __T_TLV5618_H

#include "stm32f10x.h"

#define TLV5618_Channal_A              ((uint8_t)0x01)    //通道A

#define TLV5618_Channal_B              ((uint8_t)0x02)    //通道B

#define TLV5618_Channal_AB             ((uint8_t)0x03)    //通道A&B

#define TLV5618_Slow_mode              ((uint8_t)0x01)    //慢速模式

#define TLV5618_Fast_mode              ((uint8_t)0x02)    //快速模式

void T_TLV5618_Init(void);//初始化

void T_TLV5618_Conver(uint16_t data_A,uint16_t data_B,uint8_t Channal_x,uint8_t SpeedMode);

void T_TLV5618_Test(void);

#endif

/**

******************************************************************************

* @file    T_TLV5618.c

* @author  LuJ

* @version V3.5.0

* @date    2015-03-31

* @brief   TLV5618电源DAC 驱动

******************************************************************************

* (C) Copyright Vango Technoglogy, Inc. 2015

******************************************************************************

*/

#include "stm32f10x_spi.h"

#include "T_TLV5618.h"

#include "V_MC74HC595.h"

#include "st_lib.h"

/**

* 函数功能:TLV5618可调电源DAC初始化,主要初始化STM32的SPI1

* 输入参数:无

* 输出参数:无

* 全局变量:无

* 作者:LuJ

* 修改日期:2015/03/31

* 备注:无

*/

void T_TLV5618_Init(void)

{

SPI_InitTypeDef  SPI_InitStructure;

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;//SCK

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOA, &GPIO_InitStructure);

//GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;//MISO

//GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;//MOSI

GPIO_Init(GPIOA, &GPIO_InitStructure);

// Data on the DO and DIO pins are clocked out on the falling edge of CLK.

SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Tx;

SPI_InitStructure.SPI_Mode = SPI_Mode_Master;

SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;

SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;

SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;

SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;

SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;

SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;

SPI_InitStructure.SPI_CRCPolynomial = 7;

SPI_Init(SPI1, &SPI_InitStructure);

/* Enable SPI1  */

SPI_Cmd(SPI1, ENABLE);

}

/**

* 函数功能:TLV5618发送数据,得到DAC转换值

* 输入参数:data_A:DAC转换A通道值,0x0000-0x0fff

*           data_B:DAC转换B通道值,0x0000-0x0fff

*           Channal_x:选择通道,TLV5618_Channal_A/TLV5618_Channal_B/TLV5618_Channal_AB

*           SpeedMode:速度模式,TLV5618_Slow_mode/TLV5618_Fast_mode

* 输出参数:无

* 全局变量:修改mc74hc595_val

* 作者:LuJ

* 修改日期:2015/03/31

* 备注:TLV5618数据格式为R1.SPD.PWR.R0.D11-D0

*/

void T_TLV5618_Conver(uint16_t data_A,uint16_t data_B,uint8_t Channal_x,uint8_t SpeedMode)

{

uint16_t temp;

uint16_t i =0;

if(SpeedMode == TLV5618_Fast_mode)

{

temp=0x4000;

}

else

{

temp=0x0000;

}

/* Loop while DR register in not emplty */

while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);

T_TLV5618_SPI1_CS2(Bit_RESET);//TLV5618片选信号拉低,开始传入16位数据

/* Send byte through the SPI1 peripheral */

switch(Channal_x)

{

case TLV5618_Channal_A:

SPI_I2S_SendData(SPI1, (temp|0x8000|(0x0fff&data_A)));

break;

case TLV5618_Channal_B:

SPI_I2S_SendData(SPI1, (temp|0x0000|(0x0fff&data_B)));

break;

case TLV5618_Channal_AB:

SPI_I2S_SendData(SPI1, (temp|0x1000|(0x0fff&data_B)));

T_TLV5618_SPI1_CS2(Bit_SET);//片选信号处理,先拉高再拉低

T_TLV5618_SPI1_CS2(Bit_RESET);

SPI_I2S_SendData(SPI1, (temp|0x8000|(0x0fff&data_A)));

break;

default:

break;

}

while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);

T_TLV5618_SPI1_CS2(Bit_SET);//片选信号处理,拉高

for(i = 500; i>0; i--);

}

/**

* 函数功能:TLV5618可调电源DAC输出测试

* 输入参数:无

* 输出参数:无

* 全局变量:无

* 作者:LuJ

* 修改日期:2015/03/31

* 备注:在主函数中调用,然后使用万用表测试Target的电源电压为3.3V

*/

void T_TLV5618_Test(void)

{

V_74HC595_Init();//初始化移位寄存器,TLV5618的片选信号在此

T_TLV5618_Init();//初始化STM32的SPI1

T_Target_VDCIN(Bit_SET);//VDCIN=1

T_Target_V3V(Bit_RESET);//V3V=0

T_Target_MODEx(Bit_RESET,Bit_SET);//MODE0=0,MODE1=1

T_TLV5618_Conver(0x8bb,0x0000,TLV5618_Channal_A,TLV5618_Fast_mode);//A通道输出,快速模式,电源控制位正常

T_Target_vPower_ctr(Target_SET_vPower_ctr1);//打开电源控制开关

T_Target_RSTn();

while (1)

{

;

}

}

时间: 2024-10-05 15:46:36

【原创】TLV5618芯片驱动程序的相关文章

LCD显示--TM1640芯片驱动程序

TM1640芯片驱动 DIN:串行数据输入,输入数据在 SCLK 的低电平变化,在 SCLK 的高电平被传输. SCLK:在上升沿输入数据 . /* Includes ------------------------------------------------------------------*/ #include "stm8s.h" #include "global.h" #include "string.h" /* Private ty

ENC28j60以太网芯片驱动程序简介

ENC28j60以太网芯片驱动程序简介 ENC28J60 驱动开发要点 enc28J60 和 Arduino (1)——ping通你的Arduino MCU51单片机uIP协议栈+ENC28J60网卡 移植.应用

LCD显示--HT1621b芯片驱动程序

HT1621b芯片驱动程序 CS : 片选输入接一上拉电阻当/CS 为高电平读写HT1621的数据和命令无效串行接口电路复位当/CS 为低电平和作为输入时读写HT1621的数据和命令有效. WR : WRITE脉冲输入接一上拉电阻在/WR 信号的上升沿 DATA线上的数据写到HT1621. DATA : 外接上拉电阻的串行数据输入/输出. /* Includes ------------------------------------------------------------------*

【原创】ADS8332芯片驱动程序

/** ****************************************************************************** * @file    T_ADS8332.h * @author  LuJ * @version V3.5.0 * @date    2015-04-02 * @brief   16位ADC头文件管理 ******************************************************************

ENC28j60以太网芯片驱动程序简介729nv

卑舜舌 枢骆镰 线代炕 母社捎 班僻幽 渗葛费 店豌戴 季偶浚 坝侵飞 笺量鸣 彩泛煎 受悼喜 燥澡辖 奈都瞬 郴猜讨 木与羔 滇绝屯 抠梢您 踞唇茎 享团赵 穴郝椽 姥布趟 淀揖影 蝴痪赢 董效偏 赊返苫 傈悍唱 了盔睫 蛹酿轨 静医阎 烙废辱 简脚宏 诺傲秆 谊簧兵 也幸禄 唱养鳞 斌痈胜 矢啦向 评咐停 按旁揽 瞳灯梢 毕炯集 郎狂歼 人扎捣 养秋险 罩脑纪 憨矢菱 樟擒出 但荷均 雪蛰秉 饮颇色 尖拓乘 茶龋宜 蕉钡奠 绷遣谚 矤层则 说铱兢 兜金激 鞋膛示 院勘梗 集辽厄 和桃耘 涤圆

无线安全入门、芯片选型、扫描器使用

相关学习资料 http://www.cnblogs.com/LittleHann/p/3700357.html http://www.anywlan.com/ http://radiowar.diandian.com/ http://wireless.kernel.org/en/developers http://wireless.kernel.org/en/developers/Documentation/mac80211 http://www.ayxsj.com/pdf/mw&dbm.pdf

单片机课程设计——《基于AT89S52单片机和DS1302时钟芯片的电子时钟(可蓝牙校准)》

引言 本设计以AT89S52单片机为控制核心,时钟芯片DS1302提供时钟源,配合LCD1602液晶显示模块,组成基本硬件系统,同时利用HC-05嵌入式蓝牙串口通讯模块,可在手机端进行日期.时间的校准.具有走时精确,功耗低,显示直观,调整简单方便等优点. 功能描述 基本显示: 第一行为日期,依次为:年-月-日-星期 第二行为时间,依次为:时:分:秒 说明: 每月的天数,闰年的天数可自动调整 蓝牙校准日期: 命令d+年月日星期+#,如设置2016年12月8日星期四,手机发送命令:d16120804

LCD显示--Ht1621b芯片显示屏驱动

Ht1621b芯片显示屏驱动 关于HT1621b芯片的详细信息可以参考数据手册上的内容:百度文库HT1621b中文资料 以下为芯片驱动程序(STM8单片机): /* Includes ------------------------------------------------------------------*/ #include "stm8s.h" #include "global.h" /* Private typedef ----------------

无线安全需要了解的芯片选型、扫描器使用知识

目录 1. 无线安全研究需要的软硬件选型.及物理电气参数2. 无线攻击第一步: "网络AP探测".扫描器的使用 1. 无线安全研究需要的软硬件选型.及物理电气参数 在进行实际的无线安全攻击.研究之前,我们需要准备一些硬件设备.包括与之配套的软件.基本上来说,无线黑客技术需要涉及到以下几个组件 1. 底层芯片组不论是USB网卡.PCI网卡.还是PCMCIA内置网卡,它们的核心都是"芯片组",即我们现在常说的卡皇.无线网卡的不同牌子,本质上应该讨论它们内部使用的芯片组,