一、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;
}