www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 硬件介紹:SPI:SPI是Motorola首先在其MC68HCXX系列處理器上定義的,它是一種同步的高速串行通信協(xié)議,有關(guān)SPI協(xié)議的詳細(xì)內(nèi)容,參考:SPI_互動(dòng)百科。MSP430對SPI的支持:當(dāng)msp430USART模塊控制器UxCTL的

  1. 硬件介紹:

    SPI:SPI是Motorola首先在其MC68HCXX系列處理器上定義的,它是一種同步的高速串行通信協(xié)議,有關(guān)SPI協(xié)議的詳細(xì)內(nèi)容,參考:SPI_互動(dòng)百科。

    MSP430對SPI的支持:當(dāng)msp430USART模塊控制器UxCTL的位SYNC置位時(shí),USART模塊工作于同步模式,對于149即工作于SPI模式,若是169,USART0可以支持I2C,可以通過另一控制位I2C控制,I2C位0則工作于SPI。在SPI模式下,允許單片機(jī)以確定的速率發(fā)送和接收7位或8位數(shù)據(jù)。

    同步通信與異步通信類似;同步通信和異步通信寄存器資源一致,具體寄存器的不同位之間的功能存在差異;具體寄存器內(nèi)容參見TI提供的用戶指南。

    USART模塊的SPI操作可以是3線和4線,其信號如下:
    SIMO:從進(jìn)主出,主機(jī)模式下,數(shù)據(jù)輸出;從機(jī)模式下,數(shù)據(jù)輸入。
    SOMI:從出主進(jìn),主機(jī)模式下,數(shù)據(jù)輸入;從機(jī)模式下,數(shù)據(jù)輸出。
    UCLK:USART SPI模式時(shí)鐘,信號有主機(jī)輸出,從機(jī)輸入。
    STE:從機(jī)模式發(fā)送接收允許控制腳,用于4線模式,控制多主從系統(tǒng)中多個(gè)從機(jī),避免發(fā)生沖突。具體方式如下(圖截自 用戶指南):

    四線主機(jī)模式:STE為高電平,SIMO和UCLK操作正常;STE為低電平,SIMO和UCLK被置為輸入方向,主機(jī)控制權(quán)讓出。
    四線從機(jī)模式:STE為高電平,從機(jī)的發(fā)送和接收無效,且把SOMI置為輸入方向;STE為低電平,發(fā)送接收正常,SOMI也為正常輸出。

    USART模塊串行時(shí)鐘極性和相位設(shè)置:

    USART的時(shí)鐘UCLK的極性和相位由位于UxTCTL寄存器的CKPH和CKPL位控制,具體如下圖:在程序中,我分別稱之為,時(shí)鐘模式0、時(shí)鐘模式1、時(shí)鐘模式2、時(shí)鐘模式3。


    USART的波特率產(chǎn)生,SPI不同于異步通信:異步通信由UxBR1UxBR0UxMCTL三個(gè)寄存器控制,以產(chǎn)生標(biāo)準(zhǔn)頻率;而同步模式,主從設(shè)備用同一個(gè)時(shí)鐘,不再需要產(chǎn)生標(biāo)準(zhǔn)時(shí)鐘,故而不再用UxMCTL寄存器,設(shè)其值為0.

    其他的,與異步通信基本一致,這里不再細(xì)說。具體參考用戶指南。

  2. 程序?qū)崿F(xiàn):

    程序和異步通信方式類似:首先是初始化函數(shù),然后是讀取數(shù)據(jù)、寫入數(shù)據(jù)函數(shù)。此程序采用和我之前的UART程序庫類似的結(jié)構(gòu),寫入數(shù)據(jù)后進(jìn)入低功耗等待中斷,判斷標(biāo)志位進(jìn)行寫入數(shù)據(jù)和讀取數(shù)據(jù)。

    這里函數(shù)只實(shí)現(xiàn)430的主機(jī)模式,如需從機(jī)模式可以仿照我的程序,進(jìn)行簡化實(shí)現(xiàn)。

    由于,我即將使用的SPI設(shè)備(AD7708)不是字符型設(shè)備,這里不再實(shí)現(xiàn)寫入字符串函數(shù),也不再移植printf和scanf函數(shù),如若需要可以自己添加,printf和scanf的移植參考:MSP430程序庫<四>printf和scanf函數(shù)移植

    初始化函數(shù):SpiMasterInit,實(shí)現(xiàn)主機(jī)模式的初始化工作,函數(shù)內(nèi)容如下:

char SpiMasterInit(long baud,char dataBits,char mode,char clkMode)

{

long int brclk; //波特率發(fā)生器時(shí)鐘頻率

UxCTL |= SWRST; //初始

//反饋選擇位,為1,發(fā)送的數(shù)被自己接收,用于測試,正常使用時(shí)注釋掉

//UxCTL |= LISTEN;

UxCTL |= SYNC + MM; //SPI 主機(jī)模式

//時(shí)鐘源設(shè)置

UxTCTL &=~ (SSEL0+SSEL1); //清除之前的時(shí)鐘設(shè)置

if(baud<=16364) //

{

UxTCTL |= SSEL0; //ACLK,降低功耗

brclk = 32768; //波特率發(fā)生器時(shí)鐘頻率=ACLK(32768)

}

else

{

UxTCTL |= SSEL1; //SMCLK,保證速度

brclk = 1000000; //波特率發(fā)生器時(shí)鐘頻率=SMCLK(1MHz)

}

//------------------------設(shè)置波特率-------------------------

if(baud < 300||baud > 115200) //波特率超出范圍

{

return 0;

}

//設(shè)置波特率寄存器

int fen = brclk / baud; //分頻系數(shù)

if(fen<2)return (0); //分頻系數(shù)必須大于2

else

{

UxBR0 = fen / 256;

UxBR1 = fen % 256;

}

//------------------------設(shè)置數(shù)據(jù)位-------------------------

switch(dataBits)

{

case 7:case'7': UxCTL &=~ CHAR; break; //7位數(shù)據(jù)

case 8:case'8': UxCTL |= CHAR; break; //8位數(shù)據(jù)

default : return(0); //參數(shù)錯(cuò)誤

}

//------------------------設(shè)置模式---------------------------

switch(mode)

{

case 3:case'3': UxTCTL |= STC; USPI3ON; break; //三線模式

case 4:case'4': UxTCTL &=~ STC; USPI4ON; break; //四線模式

default : return(0); //參數(shù)錯(cuò)誤

}

//------------------------設(shè)置UCLK模式-----------------------

switch(clkMode)

{

case 0:case'0': UxTCTL &=~ CKPH; UxTCTL &=~ CKPL; break; //模式0

case 1:case'1': UxTCTL &=~ CKPH; UxTCTL |= CKPL; break; //模式1

case 2:case'2': UxTCTL |= CKPH; UxTCTL &=~ CKPL; break; //模式2

case 3:case'3': UxTCTL |= CKPH; UxTCTL |= CKPL; break; //模式3

default : return(0); //參數(shù)錯(cuò)誤

}

UxME |= USPIEx; //模塊使能

UCTL0 &= ~SWRST; // Initialize USART state machine

UxIE |= URXIEx + UTXIEx; // Enable USART0 RX interrupt

return(1); //設(shè)置成功

}

程序注釋已經(jīng)比較詳細(xì),這里不再細(xì)說;如果要改為從機(jī)模式,把時(shí)鐘設(shè)置和波特率設(shè)置去掉應(yīng)該就可以了。

發(fā)送函數(shù)和接收函數(shù):

void SpiWriteDat(char c)

{

while (TxFlag==0) SpiLpm(); // 等待上一字節(jié)發(fā)完,并休眠

TxFlag=0; //

UxTXBUF=c;

}

char SpiReadDat()

{

while (RxFlag==0) SpiLpm(); // 收到一字節(jié)?

RxFlag=0;

return(UxRXBUF);

}

發(fā)送和接收函數(shù)和異步通信里面的幾乎一樣,如果標(biāo)志位為0,則等待改變?yōu)?,然后寫入或讀出;標(biāo)志位在中斷函數(shù)里被更改;中斷函數(shù)如下:

#pragma vector=USARTxRX_VECTOR

__interrupt void UartRx()

{

RxFlag=1;

__low_power_mode_off_on_exit();

}

#pragma vector=USARTxTX_VECTOR

__interrupt void UartTx ()

{

TxFlag=1;

__low_power_mode_off_on_exit();

}

中斷里面僅僅置標(biāo)志位后,就退出低功耗;退出后即寫入或者讀取數(shù)據(jù)。

讀取或?qū)懭牒瘮?shù)調(diào)用的SpiLpm函數(shù):

void SpiLpm()

{

if(UxTCTL&SSEL0) LPM3; //若以ACLK 作時(shí)鐘,進(jìn)入LPM3休眠(僅打開ACLK)

else LPM0; //若以SMCLK作時(shí)鐘,進(jìn)入LPM0休眠(不關(guān)閉SMCLK)

}


  1. 根據(jù)不同情況進(jìn)入低功耗,如果單片機(jī)其他地方不允許進(jìn)入低功耗,可以更改這個(gè)函數(shù)。

    程序部分就這么多了。需要的函數(shù)在頭文件里面聲明,方便使用。

  2. 使用示例:

    程序使用方式和之前的程序庫相同,加入c文件,包含h文件,調(diào)用初始化函數(shù)后即可掉用程序庫中的函數(shù)。


#include "msp430x16x.h" //430寄存器頭文件

#include "Spi.h" //串口通訊程序庫頭文件


void main()

{

// Stop watchdog timer to prevent time out reset

WDTCTL = WDTPW + WDTHOLD;

ClkInit();

// 主機(jī)模式,波特率25000,8位數(shù)據(jù)位,三線模式,時(shí)鐘模式0(具體見spi.c)

SpiMasterInit(25000,8,3,0);

_EINT();

while(1) //串口測試

{

SpiWriteDat(0X20);

char a = SpiReadDat();

}

}


  1. 這里只是一個(gè)簡單的使用示例,詳細(xì)的使用,將會在下一篇給出,下一篇:MSP430程序庫<六>通過SPI操作AD7708;將會使

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉