首页 > 学院 > 开发设计 > 正文

蓝宙电子 TSL1401 线性传感器 笔记

2019-11-11 04:32:29
字体:
来源:转载
供稿:网友

连接及端口说明

这里写图片描述

AO:模拟输出控制端口(接单片机IO口) SI:CCD数据传输端口(接ADC通道,一组数据共128位,对应128个像素点) CLK:时钟脉冲端口(接单片机IO口)

时序图

这里写图片描述

时序图解读: CLK信号为低电平时,将SI置为高电平并保持到CLK信号跳变为高电平,此时将SI置为低电平,AO端口开始向单片机ADC传输模拟信号,每个模拟信号保持一个CLK单位(即CLK由高电平跳变为低电平再跳变为高电平,建议在低电平时采集信号),共传输128个模拟信号。

蓝宙驱动程序解读

/*端口对应说明pin27 = SIpin29 = CLKpin0 = AO*/void CAMERA(void){ TranamitData("Line Senaor Test/n/r"); //上位机显示信息 SIV.PCR[27].R = 0x0200; //初始化pin27为输出端口 SIV.PCR[29].R = 0x0200; //初始化pin29为输出端口 for(j=0;j<2;j++) //循环2次,即采集两组CCD数据 { /*采集前设置开始*/ SIV.PCR[27].R = 0x0200; //设置pin27(SI)为输出端口 SIV.PCR[29].R = 0x0200; //设置pin29(CLK)为输出端口 SIV.PGPDO[0].R &= ~0x00000014; //设置所有端口为低电平 SIV.PGPDO[0].R |= 0x00000010; //设置SI为高电平 Delay(); //延时一会 SIV.PGPDO[0].R |= 0x00000004; //设置CLK为高电平 Delay(); //延时一会 SIV.PGPDO[0].R &= ~0x00000010; //设置SI为低电平 Delay(); //延时一会 SIV.PGPDO[0].R &= ~0x00000004; //设置CLK低电平 Delay(); /*采集前设置结束*/ /*CCD像素模拟数据采集开始*/ for (i=0;i<128;i++) //循环128次,即采集1128个像素点模拟数据 { Delay(); //延时一会 SIV.PGPDO[0].R |= 0x00000004; //设置CLK为高电平 ADC.MCR.B.NSTART = 1; //ADC开始采集模拟数据 while(ADC.MCR.B.NSTART == 1); //等待ADC采集完成 adcdata = ADC.CDR[0].B.CDATA; //将转换成的数字信号存储到adcdata Dealy(); //延时一会 SIV.PGPDO[0].R &= ~0x00000004; //设置CLK为低电平 Resulit[1] = (uint8_t)(adcdata >> 2); //数据去掉低位两位,转换为8位整型存储至数组 } Delaycamera(); //完成一位像素采集,CCD延时一会 /*CCD像素模拟数据采集结束*/ } PRintlistall(); //输出数据到上位机}

注:程序未验证


上一篇:字符串问题(四)

下一篇:kruskal

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表