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的所有程序,僅供參考。
?????
總結
- 上一篇: ValueError: With n_s
- 下一篇: linux7.4 yum配置,redha