1.簡介
LTC2600是亞德諾公司的單極性八通道16位軌至軌DAC,體積小,分辨率高。使用SPI驅(qū)動方式編程控制。
2.引腳功能
先上一張手冊里面的引腳功能描述,重點關(guān)注片選引腳CS,時鐘引腳SCK,數(shù)據(jù)輸入SDI。
2.1 片選CS引腳:如引腳介紹上所說,當片選CS為低電平時,SCK被使能,SDI的數(shù)據(jù)轉(zhuǎn)移到寄存器,CS為高時,SCK禁能,系統(tǒng)執(zhí)行規(guī)定的命令。所以我們在寫數(shù)據(jù)時先把CS拉低,等到數(shù)據(jù)寫完再把CS拉高即可。
2.2 時鐘SCK引腳:具體的使用邏輯參照SDI的引腳介紹和本文第三節(jié)的時序圖,SCK上升沿時SDI發(fā)送一個bit的數(shù)據(jù)。
2.3 數(shù)據(jù)輸入SDI:串行接口數(shù)據(jù)輸入,單片機控制輸出各個bit的值。
3.時序圖
通過這張時序圖,可以看出LTC2600的讀寫邏輯,和其他SPI讀寫大同小異。片選為低時才能發(fā)送數(shù)據(jù),SDI在時鐘SCK的上升沿發(fā)送數(shù)據(jù)。
4.數(shù)據(jù)位
LTC2600一組輸入數(shù)據(jù)共24個bit。低16位為數(shù)據(jù)信息,16-19位為通道地址,20-23位為命令類型。通道地址和命令類型定義見下表1.
5.代碼實現(xiàn)
代碼使用模擬SPI實現(xiàn)控制。具體的代碼參照以下鏈接,已經(jīng)封裝好文件,直接調(diào)用即可。
LTC2600代碼
//channel=0-7分別代表通道A-H,15代表全部通道。data代表輸出電壓,范圍0-65535 void SendDA_LTC2600(uint8_t channel,uint16_t data) xkdata|=0x03<<20;//命令位c1和c0寫為1:寫至輸入寄存器n,更新所有寄存器。 xkdata|=(channel&0x0f)<<16;//通道地址 xkdata|=data&0xffff;//防止data數(shù)據(jù)過大,最大支持16bit xkdata<<=8;//數(shù)據(jù)左移8位,低八位為空 CS_0();//片選(引腳7),片選為低時,sck被使能,數(shù)據(jù)轉(zhuǎn)移至寄存器 //LTC2600 SCLK時鐘高達50M,因此可以不延遲 if(xkdata&0x80000000)//對xkdat的31位到8位按位與 SCK_1();//sck(引腳8)上升沿,數(shù)據(jù)轉(zhuǎn)移至器件。 CS_1();//片選拉高,sck禁能,執(zhí)行規(guī)定的命令
|