日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CCD的驱动程序

發布時間:2023/12/8 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CCD的驱动程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?????

?(PS: 之前一直使用官方的例程,很復雜,有很多根本用不上的,用起來不太方便;便請教大神CCD的驅動程序,大神講了一遍,還幫忙寫了程序框架;作為一個小白,深知沒人指導的困惑,想寫下來,希望可以對看到的人有所幫助,開始正文。)



??????????????????????????????????????????????????????????????????????????????????????????????????????? (這是官方datasheet的CCD驅動時序圖)

?????? 1 程序思想

????????? 在SI為高電平,CLK信號的上升沿, AO開始采集像素點,接著,SI置為低電平,每來一個CLK時鐘信號,AO采集一個像素點,直到采集完128個像素點。

?? 程序正文? (因為本人使用的芯片是 K60? 用的山外的庫? 如果不一樣 請自行參考移植)

????????? //???? 初始化引腳

???????? gpio_init(SI,GPO,0);???????? //SI,CLK,AO 的引腳號自行給定,這里直接使用名字

???????? gpio_init(CLK,GPO,0);

???????? adc_init(AO);?????????????? // AO?? 所在的AD通道的管腳號

???????? //?? 曝光部分

??????? gpio_set(SI,1);

??????? for(i=0;i<3;i++)??????????? // for產生一個微小的延時,i這里未定義;讀者使用前請先定義

??????? {

???????? }???????

???????? gpio_set(ClK,1);

???????? DELAY_US(4);???????????????????? //產生一個4us的延時

??????? gpio_set(SI,0);

??????? for(i=0;i<3;i++)????????????????? // for產生一個微小的延時,i這里未定義;讀者使用前請先定義

??????? {

???????? }

???????? gpio_set(ClK,0);

???????? DELAY_US(4);

??????? for(i=0;i<256;i++)

??????? {

?????????? gpio_turn(CLK);???????????????? //產生128個CLK時鐘,曝光時序

?????????? DELAY_US(4);

???????? }

??????

??????? DELAY_MS(5);??????????????? ? ? ? ? //設置曝光時間? 5ms ,可以自行更改,達到最好的效果

?????

?????? //? 128個像素點采集程序

??????

??????? gpio_set(SI,1);

??????? for(i=0;i<3;i++)???????????????????? // for產生一個微小的延時

??????? {

???????? }???????

???????? gpio_set(ClK,1);

???????? DELAY_US(4);?????????????????????? //產生一個4us的延時

??????? gpio_set(SI,0);

??????? for(i=0;i<3;i++)??????????????????? //同上

??????? {

???????? }

???????? gpio_set(ClK,0);

???????? DELAY_US(4);

???????? Pixel[index] = adc_once(AO);??????? //index Pixel未定義 Pixel為像素點數組,AO的管腳號(同上)

??????? for(i=0;i<254;i++)?????????????????? // i<254,是之前已經采集了一個像素點,這里只需采集127個

??????? {

?????????? index++;

?????????? gpio_turn(CLK);?????????????????? //產生128個CLK時鐘

?????????? DELAY_US(4);

?????????? if(i%2 == 1)????????????????????? //? 此時CLK = 0,為低電平

??????????? {

????????????? Pixel[index] = adc_once(AO);? //? 在CLK低電平采集像素點

??????????? }

???????? }

???????? gpio_set(CLK,1);????????????????? // 產生最后一個CLK時鐘

???????? DELAY_US(4);?????????????????

???????? gpio_set(CLK,0);

???????? DELAY_US(4);

?//??? 以上為驅動CCD的所有程序,僅供參考。

?????





總結

以上是生活随笔為你收集整理的CCD的驱动程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。