Arduino UNO 硬件SPI驱动TLC5615-Arduino中文社区 - Powered by Discuz! Archiver

希岩 发表于 2018-12-2 17:56

Arduino UNO 硬件SPI驱动TLC5615



有一个10位的dac芯片,TLC5615,SPI驱动,挺好用的。查网上资料arduino 驱动TLC615的都是用普通IO的,不好用,复杂。本文将采用SPI接口实现TLC5615的驱动,实现三角波输出。
看图,看程序即可。
/*********************************
* COPYRIGHT NOTICE
* Copyright (c) 2018
功    能:SPI硬件驱动TLC5615,简单实现三角波
设    计:凌晨七點半
QQ群交流:871103113
日    期:2018.12.2
引脚定义:TLC5615->Arduino UNO
DIN(1)->11
SCLK(2)->13
CS(3)->10
DOUT(4)->NC
AGND(5)->GND
REFIN(6)->2.5V(通过两个电阻分压VCC)
OUT(7)->输出
VDD(8)->5V
*********************************/
#include <SPI.h>

#define PIN_CS 10
#define TLC5615_CS_0      digitalWrite(PIN_CS, LOW)
#define TLC5615_CS_1      digitalWrite(PIN_CS, HIGH)

//----------------------------------------------------------------
//16位数据格式
void WriteTLC5615(unsigned int data)   //TLC5615 DAC函数
{
TLC5615_CS_0;
_NOP();
    SPI.transfer(data>>6);          //高8位
    SPI.transfer((data<<2)&0xFF);   //低2位
TLC5615_CS_1;
}
//----------------------------------------------------------------
void setup()
{
//set SPI
pinMode(PIN_CS,OUTPUT);    //片选
SPI.setDataMode(SPI_MODE0);    //CPOL=0;CPHA=0
SPI.setClockDivider(SPI_CLOCK_DIV16); //1MHz <1.21MHz
SPI.begin();
}

int num;          //循环变量
void loop()
{

for(num=0;num<1024;num++)
{
   WriteTLC5615(num); //三角波
//delay(20);//取消注释,加上延时
}
for(num=1023;num>=0;num--)
{
   WriteTLC5615(num); //三角波
//delay(20);//取消注释,加上延时
}
}

页: [1]
查看完整版本: Arduino UNO 硬件SPI驱动TLC5615