TSL1401 CCD传感器驱动

一、ccd介绍
在这里插入图片描述

二、引脚
在这里插入图片描述
工作电压3.3v

三、原理
本质就是一排感光传感器,对应128个灰度值,我们通过数据脚读取出来
时序图
在这里插入图片描述

四、示例程序
这里给出stm32f103的程序

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

							 Í·ÎļþÇø										

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
#include "sys.h"
#include "gpio.h"
#include "adc.h"


/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

							 ½Ó¿Ú¶¨ÒåÇø										

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
#define TL1401_AO_GET() adc_get(3)
#define TL1401_SI_H() gpio_set(0, 5, 1)
#define TL1401_SI_L()	gpio_set(0, 5, 0)
#define TL1401_CLK_H() gpio_set(0, 4, 1)
#define TL1401_CLK_L() gpio_set(0, 4, 0)
#define TL1401_Delay_100ns() {
      
      ;;;;;;}
#define TL1401_Delay_us() {
      
      \
	TL1401_Delay_100ns()\
	TL1401_Delay_100ns()\
	TL1401_Delay_100ns()\
	TL1401_Delay_100ns()\
	TL1401_Delay_100ns()}


/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

							 ±äÁ¿¶¨ÒåÇø										

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/



/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

							 º¯Êý¶¨ÒåÇø										

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
//初始化函数,配置adc和goio
void ccd_Init(void)
{
    
    
	//adc init
	adc_Init(0X04);//ADC CH2
	//gpio init
	gpio_out_init(0, 4, 0);//CLK A1
	gpio_out_init(0, 5, 0);//SI A1
}

//采集数据,参数128字节的数组
int ccd_ImgGet2(unsigned char *img)
{
    
    
		unsigned char i;
	
	TL1401_CLK_H();
	TL1401_SI_L();
	TL1401_Delay_us();
	
	TL1401_SI_H();
	TL1401_CLK_L();
	TL1401_Delay_us();
	
	TL1401_CLK_H();
	TL1401_SI_L();
	TL1401_Delay_us();
	
	for(i = 0; i < 128; i++)
	{
    
    
		TL1401_CLK_L();
		TL1401_Delay_us();
		TL1401_Delay_us();
		img[i] = TL1401_AO_GET()/16;
		TL1401_CLK_H();
		TL1401_Delay_us();
	}
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/u010835747/article/details/120689909
今日推荐