最近在调试TLC3578,是TI公司的。感觉还蛮高端大气的,但是怎么调也调也调不出来。贴上简短程序,恳请大家帮帮忙。谢谢
/****************************************SPI接口***************************************************/
#include<msp430x14x.h>
#include"spi.h"
unsigned int RXbuffer[]; //输入缓冲数组
//SPI初始化设置,IO口配置
void SPI_Init(void)
{
P4DIR|=BIT4+BIT5;
P5DIR&=~BIT0;
}
//输出,即对从机写数据
void write_2byte(unsigned int data)
{
unsigned int i;
for(i=0;i<16;i++)
{
SCK_H;
if(data&(0x8000))
MOSI_H;
else
MOSI_L;
SCK_L;
data<<=1;
}
}
//输入,即接收数据,读从机的数据
unsigned int read_14bit(void)
{
unsigned int i,data;
for(i=0;i<14;i++)
{
SCK_H;
if(P5IN&BIT0)
{
data<<=1;
data=data+BIT0;
}
else
data<<=1;
SCK_L;
}
return data;
}
/***************************************************TLC3578配置*********************************************************/
#include<msp430x14x.h>
#include"tlc3578.h"
#include"spi.h"
unsigned int RXbuffer_array[8];
//TLC3578初始化设置,IO口配置
void TLC3578_Init(void) //这里没有配置就说明没有使用,其配置方式见电路说明,比如FS已经接DVDD
{
P4DIR|=BIT6; // /CS片选,低电平有效
P5DIR&=~BIT1; // EOC或者/INT信号,读数据时转换完成标志
}
//TLC3578写入数据,FS=1
void TLC3578_Write(void)
{
unsigned int TempData;
TempData=Wt_cfr12+D11_H+D10_BOB+D9_SS+D8_INOSC+D7_SigEn+D65_REP+D2_INT+D10_FIFO_FULL;
//TempData=0XFFFF;
//delay_ms(100);
CS_L;
write_2byte(A0);
CS_H;
delay_us(10);
CS_L;
write_2byte(TempData);
CS_H;
}
//TLC3578读数据,FS=1
void TLC3578_Read(void)
{
unsigned int i;
CS_L;
write_2byte(FIFO_RD);
CS_H;
delay_us(10);
CS_L;
if(P5IN&BIT1==0)
{
for(i=0;i<8;i++)
{
RXbuffer_array
=read_14bit();
}
}
CS_H;
}
//输出测试
unsigned int out_data(void)
{
unsigned int temp;
temp=RXbuffer_array[1];
return temp;
}
此帖出自小平头技术问答
一周热门 更多>