TSL1401线性CCD TM32F103开发平台移植源代码
#include "TSL1401.h"
void CCDInitConfiguration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=SI_Pin;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(SI_Port,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=CLK_Pin;
GPIO_Init(CLK_Port,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=AO_Pin;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
GPIO_Init(AO_Port,&GPIO_InitStructure);
ADC_Configuration();
}
void ADC_Configuration(void)
{
ADC_InitTypeDef ADC_InitStructure;
ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;//ADC2/ADC2工作在独立模式
ADC_InitStructure.ADC_ScanConvMode=DISABLE;//工作在单通道模式下
ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;//工作在连续模式下
ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//转换由软件触发
ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//右对齐模式
ADC_InitStructure.ADC_NbrOfChannel=1;//顺序进行规则转换的 ADC 通道的数目
ADC_Init(ADC2,&ADC_InitStructure);
ADC_RegularChannelConfig(ADC2,A0_ADCChannel,1,ADC_SampleTime_239Cycles5);
ADC_Cmd(ADC2,ENABLE);
ADC_ResetCalibration(ADC2);//重新指定ADC的校准寄存器
while(ADC_GetResetCalibrationStatus(ADC2));//获取ADC重置校准寄存器的状态
ADC_StartCalibration(ADC2);//开始指定 ADC 的校准状态
while(ADC_GetCalibrationStatus(ADC2));//获取指定 ADC 的校准程序
ADC_SoftwareStartConvCmd(ADC2,ENABLE);//使能或者失能指定的 ADC 的软件转换启动功能
}
void StartIntergration(void)
{
unsigned char i;
SI_SetVal;
SamplingDelay();
CLK_SetVal;
SamplingDelay();
SI_ClrVal;
SamplingDelay();
CLK_ClrVal;
for(i=0; i<127; i++)
{
SamplingDelay();
SamplingDelay();
CLK_SetVal;
SamplingDelay();
SamplingDelay();
CLK_ClrVal;
}
SamplingDelay();
SamplingDelay();
CLK_SetVal;
SamplingDelay();
SamplingDelay();
CLK_ClrVal;
}
void ImageCapture(unsigned char * ImageData)
{
unsigned char i;
extern u8 AtemP ;
SI_SetVal;
SamplingDelay();
CLK_SetVal;
SamplingDelay();
SI_ClrVal;
SamplingDelay();
for(i=0;i<255;i++)
{
SamplingDelay();
}
ADC_SoftwareStartConvCmd(ADC2,ENABLE);
while(!ADC_GetFlagStatus(ADC2,ADC_FLAG_EOC));
*ImageData=ADC_GetConversionValue(ADC2)>>4;
ImageData++;
CLK_ClrVal;
for(i=0;i<127;i++)
{
SamplingDelay();
SamplingDelay();
CLK_SetVal;
SamplingDelay();
SamplingDelay();
ADC_SoftwareStartConvCmd(ADC2,ENABLE);
while(!ADC_GetFlagStatus(ADC2,ADC_FLAG_EOC));
*ImageData=ADC_GetConversionValue(ADC2)>>4;
ImageData++;
CLK_ClrVal;
}
SamplingDelay();
SamplingDelay();
CLK_SetVal;
SamplingDelay();
SamplingDelay();
CLK_ClrVal;
}
void SamplingDelay(void)
{
volatile uint8_t i ;
for(i=0;i<1;i++)
{
__NOP();
__NOP();
}
}
.h文件源码如下:
#ifndef _TSL1401_H_
#define _TSL1401_H_
#include "stm32f10x_gpio.h"
#include "stm32f10x_adc.h"
//可以根据自己的需要修改响应的引脚
#define SI_Pin GPIO_Pin_0
#define SI_Port GPIOC
#define CLK_Pin GPIO_Pin_1
#define CLK_Port GPIOC
#define AO_Pin GPIO_Pin_2
#define AO_Port GPIOC
#define A0_ADCChannel ADC_Channel_12
#define SI_SetVal GPIO_SetBits(SI_Port,SI_Pin)
#define SI_ClrVal GPIO_ResetBits(SI_Port,SI_Pin)
#define CLK_SetVal GPIO_SetBits(CLK_Port,CLK_Pin)
#define CLK_ClrVal GPIO_ResetBits(CLK_Port,CLK_Pin)
void CCDInitConfiguration(void);
void StartIntergration(void);
void ADC_Configuration(void);
void ImageCapture(unsigned char * ImageData) ;
void SendImageData(unsigned char * ImageData);
void SamplingDelay(void);
#endif
使用过程中有任何问题可以一起交流学习。
声明:本次分享源代码来源于蓝宙电子的源驱动代码,只用作交流学习,不用做商业用途。
TSL1401线性CCD TM32F103开发平台移植源代码的更多相关文章
- 只能用Android studio做平台移植了! 在Windows10下, 开发Android。
安装好IDE后, 会一直显示同步失败, 看看如下步骤: 需要注意的是: -> 安装NDK 自带的NDK版本有问题 自己去下一个15版本的 -> 按照系统提示一步一步安装其他 ...
- minicom移植到ARM开发平台
minicom需要ncurses库的支持.arm-linux-gcc中并没有此库故需要交叉编译ncurses,否则出现很多头文件.库函数找不到. 软件环境: ncurses-6.0 下载网址:http ...
- JeeSite 企业信息化快速开发平台
平台简介 JeeSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的开源Java EE快速开发平台. JeeSite本身是以Spring Framework为核心容器,Spri ...
- 企业信息化快速开发平台--JeeSite
JeeSite是在Spring Framework基础上搭建的一个Java基础开发平台,以Spring MVC为模型视图控制器,MyBatis为数据访问层, Apache Shiro为权限授权层,Eh ...
- .NET:持续进化的统一开发平台
阅读文本大概需要 8 分钟. 标题使用的是进化这个词语,是因为 .NET 在不断的努力,也在不断的重构. 这篇文章的更多目的和意义在于科普,俗称"传教". # 持续进化的 .NET ...
- JeeSite信息化快速开发平台
平台简介 JeeSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的开源Java EE快速开发平台. JeeSite是您快速完成项目的最佳基础平台解决方案,JeeSite是您 ...
- 4款java快速开发平台推荐
JBoss Seam JBoss Seam,算得上是Java开源框架里面最优秀的快速开发框架之一. Seam框架非常出色,尤其是他的组件机制设计的很有匠心,真不愧是Gavin King精心打造的框架了 ...
- 搭建基于 STM32 和 rt-thread 的开发平台
我们需要平台 如果说,SharePoint 的价值之一在于提供了几乎开箱即用的 innovation 环境,那么,智能设备的开发平台也一样.不必每次都从头开始,所以需要固定的工作室和开发平台作为创新的 ...
- SuperMap iClient 7C——网络客户端GIS开发平台 产品新特性
SuperMap iClient 7C是空间信息和服务的可视化交互开发平台,是SuperMap服务器系列产品的统一客户端.产品基于统一的架构体系,面向Web端和移动端提供了多种类型的SDK开发包,帮助 ...
随机推荐
- apktool动态破解apk
那么今天我们就用另外一种方式来破解apk:动态方式,关于动态方式其实很广义的,因为动态方式相对于静态方式来说,难度大一点,但是他比静态方式高效点,能够针对更过的破解范围.当然动态方式很多,所以这里就分 ...
- fastDFS与Java整合上传下载
由于项目需要整合个文件管理,选择使用的是fastDFS. 整合使用还是很方便的. 准备 下载fastdfs-client-java源码 源码地址 密码:s3sw 修改pom.xml 第一个plugin ...
- Emmet之html语法
一.简写语法 Emmet 用和 CSS 选择器相似的语法来描述元素的嵌套层级关系和属性,实现 HTML/XML/CSS 等代码的智能自动补全. 其通过文件名后缀识别文件类型,从而使用对应的自动补全语法 ...
- 自设table表格,获取内容,并经弹出框的url传参,获取结果显示在弹出框,并加载合计
table表格,选择框 form id="editForm1"> <table class="table_form"> <td > ...
- java基础语法(一)
java基础语法(一) 1.类是一种抽象的概念,对象是类的一种具体表示形式,是具体的概念.先有类,然后由类来生成 对象(Object).对象又叫做实例(Instance). 2.类由两大部分构成:属性 ...
- Spring定时任务(一):SpringTask使用
背景:在日常开发中,经常会用到任务调度这类程序.实现方法常用的有:A. 通过java.util.Timer.TimerTask实现. B.通过Spring自带的SpringTask. C. 通过Spr ...
- BuautifulSoup4库详解
1.BeautifulSoup4库简介 What is beautifulsoup ? 答:一个可以用来从HTML 和 XML中提取数据的网页解析库,支持多种解析器(代替正则的复杂用法) 2.安装 p ...
- Angular集成admin-lte框架
其实上一篇里面提到的集成datatables.net就是admin-lte里面的一个子插件,不过这个子插件,他是自带types定义文件的,admin-lte这个东西在DefinitelyTyped里面 ...
- 最全的 Swift 4 新特性解析
转自: http://www.jianshu.com/p/f35514ae9c1a WWDC 2017 带来了很多惊喜.Swift 4 也伴随着 Xcode 9 测试版来到了我们的面前,很多强大的新特 ...
- zxg项目准备的技术资料
bootstrap工具大全:http://www.w3cplus.com/source/the-best-bootStrap-resources.html ubuntu-安装aptana3 http ...