tlv5608z.c

来自「为苏州一家公司所做的的恒温恒湿车间控制 系统」· C语言 代码 · 共 60 行

C
60
字号
//[包含头文件]
#include "SPI.h"
#include "SCI.h"
/*TLV5608芯片D/A转换初始化子程序(TLV5608Init.c)-----------------*
*功  能:初始化TLV5608的CTRL0、CTRL1寄存器                       *
*参  数:fs-片号(fs=0or1)                                        *
*返  回:无                                                      *
*--------------------------------------------------------------*/
void TLV5608Init(INT8U fs)
{
  CS_D |=0b00001100;  //定义PTC2~3为输出
  CS_P |=0b00001100;  //PTC2~3输出为高电平
  //设置CTRL0寄存器 
  SPIDR=0b10000000;       //发送高8位数据(CTRL0地址为1000)
  CS_P &= ~(1<<(fs+2));   //相应片TLV.FS由高电平变为低电平,产生下降沿
                      //此后在每个SCLK的下降沿传送一位数据,共传输16位数据   
 
  while ((SPISCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1 
                                             //发送完毕 
  SPIDR=0b00000000;       //发送低8位数据
  while ((SPISCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1 
                                             //发送完毕                                             
  CS_P |= (1<<(fs+2));   //数据传输完毕,相应片TLV.FS由低电平变为高电平  
  //设置CTRL1寄存器 
  SPIDR=0b10010000;       //发送高8位数据(CTRL1地址为1001)
  CS_P &= ~(1<<(fs+2));   //相应片TLV.FS由高电平变为低电平,产生下降沿
                      //此后在每个SCLK的下降沿传送一位数据  
  
  while ((SPISCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1 
                                             //发送完毕 
  SPIDR=0b00001111;       //发送低8位数据(正常电压,快速)
  while ((SPISCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1 
                                             //发送完毕                                             
  CS_P |= (1<<(fs+2));   //数据传输完毕,相应片TLV.FS由低电平变为高电平                                    
}
/*TLV5608芯片D/A转换子程序(TLV5608Z.c)--------------------------*
*TLV5608的接线:                                                 *
*             ① SCLK(3)接MC08HC908GP32的SPSCK(18)              *
*             ② DIN(2)接MC08HC908GP32的MISO(17)                *
*             ③ LDAC(18)接MC08HC908GP32的PTC4                  *
*             ④ 0-1片FS(4作为片选信号)接分别接的PTC2~3         *
*                MODE接高电平,选择uC模式                       *
*入口:fs-片号(fs=0or1),buf-存放数据                            *
*--------------------------------------------------------------*/
void TLV5608Z(INT8U fs, INT16U buf)
{
  CS_D |=0b00001100;  //定义PTC2~3为输出
  CS_P |=0b00001100;  //PTC2~3输出为高电平	
  //TLV5608.FS=1  
  SPIDR=buf>>8;       //发送高8位数据  
  CS_P &= ~(1<<(fs+2));   //相应片TLV.FS由高电平变为低电平,产生下降沿
                      //此后在每个SCLK的下降沿传送一位数据        
  
  while ((SPISCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1 
                                             //发送完毕 
  SPIDR=buf;         //发送低8位数据
  while ((SPISCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1 
                                             //发送完毕
  CS_P |= (1<<(fs+2));   //数据传输完毕,相应片TLV.FS由低电平变为高电平              
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?