SPI串行擴(kuò)展應(yīng)用實(shí)例
例 將AT89C51片內(nèi)RAM30H、31H單元中的16位數(shù)據(jù)通過SPI總線接口傳送到數(shù)模轉(zhuǎn)換器TLC 5615。
分析:TLC5615是3線串行總線接口10位電壓輸出數(shù)/模轉(zhuǎn)換器,它既可與單片機(jī)的 SPI總線接口相連接,又可與單片機(jī)的Microware總線(另外一種三線制總線)接口相連接。TLC5615內(nèi)部結(jié)構(gòu)如圖1所示。
TLC5615通過固定增益為2的運(yùn)放緩沖電阻網(wǎng)絡(luò),把10位數(shù)字?jǐn)?shù)據(jù)轉(zhuǎn)換為模擬電壓。在TLC5615芯片上電時,內(nèi)部電路把D/A寄存器復(fù)位為0。其輸出具有與基準(zhǔn)輸入相同的極性,表達(dá)式為:Vo=2×REF×CODE/1024
圖1 TLC5615內(nèi)部結(jié)構(gòu)
其中,CODE是通過串行總線接口輸入的待轉(zhuǎn)換的數(shù)據(jù);REF是基準(zhǔn)電壓。
TLC5615最大的串行時鐘速率不超過14MHz,10位DAC的建立時間為12.5μs,通常更新速率限制至80kHz以內(nèi)。TLC5615的16位移位寄存器在SCLK的控制下從DIN引腳輸入數(shù)據(jù),高位在前,低位在后。16位移位寄存器中間的10位數(shù)據(jù)在上升沿的作用下輸入10位的D/A 寄存器供給D/A轉(zhuǎn)換。
AT89C51與TLC5615通過串行總線接口傳送8位數(shù)據(jù)如圖2所示。因AT89C51沒有SPI接口,可用軟件的辦法來模擬SPI的總線操作。P1.1模擬SPI的數(shù)據(jù)輸出端(MOSI),P1.2模擬SPI的SCK輸出端,P1.3模擬SPI的從機(jī)選擇端(SS);TLC5615是數(shù)/模轉(zhuǎn)換器,不會向AT89C51發(fā)送數(shù)據(jù),故不需要模擬SPI的數(shù)據(jù)輸入端(MISO)。
AT89C51將片內(nèi)RAM30H、3lH單元中的16位數(shù)據(jù)傳送到TLC5615的參考程序如下:
編輯:admin 最后修改時間:2018-05-08