📄 main.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 + -