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

连接及端口说明

这里写图片描述

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

时序图

这里写图片描述

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

蓝宙驱动程序解读

/*
端口对应说明
pin27 = SI
pin29 = CLK
pin0 = 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();     //输出数据到上位机
}

注:程序未验证

  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值