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

📄 app2543.c

📁 tlc2543的linux应用程序
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <fcntl.h>#include <linux/ioctl.h>#include <linux/delay.h>#include <asm/delay.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#define AD_IOC_MAGIC 'k'#define CS_ON  		_IO(AD_IOC_MAGIC,0)#define CS_OFF 		_IO(AD_IOC_MAGIC,1)#define CLK_ON			_IO(AD_IOC_MAGIC,2)#define CLK_OFF		_IO(AD_IOC_MAGIC,3)#define INDATA_ON		_IO(AD_IOC_MAGIC,4)#define INDATA_OFF	_IO(AD_IOC_MAGIC,5)int main(){static unsigned char portsum=6;  //通道总数
unsigned char indata; //转换输入参数
unsigned char j;		//循环变量
unsigned int csl;       //CS片选
unsigned int clk;       //CLK时钟
unsigned int outdata[portsum];	//AD转换得到的数据
unsigned int tmpe;		//AD转换结果临时量
int i;
unsigned char key;int dev_fd;dev_fd = open("/dev/tlc2543",O_RDWR | O_NONBLOCK);if( dev_fd == -1){	printf("can't open file /dev/tlc2543\n");	exit(0);	}
//setparm(indata);
indata=0x00;//通道0,12bit,MSB first,正数
while(1)
{
	for(j=0;j<portsum;j++)
	{
		indata=j<<4;	//通道参数

		//setpin(csl_pin,0);    //开始IO操作		ioctl(dev_fd,CS_OFF,0);
		for(i=0;i<12;i++)
		{
				//setpin(clk_pin,1);		//上升沿触发			ioctl(dev_fd,CLK_ON,0);
				if(i<8)
					//setpin(indate_pin,(indata<<1)&1);  //输入参数往左移一位					ioctl(dev_fd,((indata<<1)&1)?INDATA_ON:INDATA_OFF,0);

			//tmpe=getpin(outdata_pin);  //获取上一次转换完的数据中的一位			read(dev_fd,&key,1);			if(key==1)tmpe=1;			else tmpe=0;
			outdata[j]=outdata[j]<<1 + tmpe; //转换结果
			//setpin(clk_pin,0);				ioctl(dev_fd,CLK_OFF,0);	
			
		} //for i<12

		//setpin(csl_pin,1);		//IO操作结束,开始转换		ioctl(dev_fd,CS_ON,0);
		//mdelay(50);			//转换需要的时间,     微秒		int a;		for(a=0;a<100;a++)			{	tmpe=tmpe+1;			}		tmpe=0;
		if(outdata[j])			{
		printf("input paramter is: %x \n",indata);
		printf("last out is: %d \n",outdata[j]);   //转换的第一个数据是错误的,舍弃			}
	}   //for i< portsum

} // wihle} // mian

⌨️ 快捷键说明

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