⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 AD芯片TLC3544在ADS下的调试程序
💻 C
字号:
/****************
*test tlc3544
************************************/
#include "AT91RM9200.H"
#include "stdio.h"

#define CS AT91C_PIO_PD19
#define SDI AT91C_PIO_PA1
#define SDO AT91C_PIO_PA0
#define SCLK AT91C_PIO_PA2
#define EOC AT91C_PIO_PB11

extern void AT91F_DBGU_Printk(char *);

void delay(int i)
{
	int index,j;
	for(index=0;index<i;index++)
		for(j=0;j<100;j++)
			;
}


void Command(int command)
{
	int i,j,result,SDIdata;
	
	long int mask;
	*(AT91C_PIOD_SODR)=CS;
	*(AT91C_PIOD_CODR)=CS;
	for(i=0,mask=0x8000;i<16;i++,mask=mask>>1)
	{
		SDIdata=command&mask;
		if(SDIdata==mask)
		*(AT91C_PIOA_SODR)=SDI;
		else
		*(AT91C_PIOA_CODR)=SDI;
		
		*(AT91C_PIOA_SODR)=SCLK;
		*(AT91C_PIOA_CODR)=SCLK;
		delay(10);

	}
	
}

int ReadData(int command)
{
int i,j,result,SDIdata;
	
	long int mask;
	*(AT91C_PIOD_SODR)=CS;
	*(AT91C_PIOD_CODR)=CS;
	for(i=0,mask=0x8000;i<16;i++,mask=mask>>1)
	{
		SDIdata=command&mask;
		if(SDIdata==mask)
		*(AT91C_PIOA_SODR)=SDI;
		else
		*(AT91C_PIOA_CODR)=SDI;
		
		*(AT91C_PIOA_SODR)=SCLK;
		*(AT91C_PIOA_CODR)=SCLK;
		
		j=(((*(AT91C_PIOA_PDSR))&SDO)==SDO);
		result+=j;
		result=result<<1;
		delay(10);
	}
	result=result>>1;
	return (result&0xFFFC);
}

void InitAD(void)
{

	Command(0xa204);   // user internal reference 0xa204 ueser external referencd oxaa04
	ReadData(0x1000);
}
int Read4()
{
	int result;	
	
	result=ReadData(0x1000);
	//while(((*(AT91C_PIOB_PDSR))&EOC)!=EOC);
	return(result);
}
int Read()
{
	int result;	
	
	result=ReadData(0x0000);
	//while(((*(AT91C_PIOB_PDSR))&EOC)!=EOC);
	return(result);
}
int Cal(int result)
{
	int v;
	v=0;
	v=(result>>2)*4000/16383;
	return v;
}
void main(void)
{
 	int result,a,b;
 	char buffer[256];
 // step0  enable peripheral clock: PIO ABD
 *(AT91C_PMC_PCER )=AT91C_ID_PIOA|AT91C_ID_PIOB|AT91C_ID_PIOD;	
 
 //step1 Enable PIO
 *(AT91C_PIOD_PER)=CS;
 *(AT91C_PIOA_PER)=SDI|SDO|SCLK;
 *(AT91C_PIOB_PER)=EOC;
 
 //step2 Enable Output
 *(AT91C_PIOD_OER)=CS;
 *(AT91C_PIOA_OER)=CS|SDI|SCLK;
 
 //step3 pio output write enable
 *(AT91C_PIOA_OWER)=CS|SDI|SCLK;

 //step4 Enable PullUp
 *(AT91C_PIOD_PPUER)=CS;
 *(AT91C_PIOA_PPUER)=SDI|SDO|SCLK;
 *(AT91C_PIOB_PPUER)=EOC;

 //clear
 *(AT91C_PIOD_CODR)=CS;
 *(AT91C_PIOA_CODR)=SDI|SCLK;
 
 InitAD();
result=ReadData(0x0000);
 b=1;
 while(a+b)
 {
 	delay(10);
 	result=ReadData(0x0000);
 	a=Cal(result);
 	delay(10);
 	result=ReadData(0x1000);
 	b=Cal(result);
 	//b=a+b+result;
 	sprintf(buffer,"TLC3544 channel 0 : \t%dmV\n\r",a);
 	AT91F_DBGU_Printk(buffer);
 	sprintf(buffer,"TLC3544 channel 3 : \t%dmV\n\n\r",b);
 	AT91F_DBGU_Printk(buffer);
 	delay(20000);
 }
 
}

⌨️ 快捷键说明

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