• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 基于MCU的室外移動機器人組合導航定位系統

    基于MCU的室外移動機器人組合導航定位系統

    ——
    作者: 時間:2015-05-08 來源:網絡 收藏

      2.5 SPI轉UART電路

    本文引用地址:http://www.czjhyjcfj.com/article/273857.htm

      由于的片上UART資源都被IMU器件和接收機占用,因此需要擴充一個UART接口才能滿足定位系統與PC機間的通信。為此將上的GPIO模擬SPI,再通過MAX3111E芯片轉成UART接口。

      MAX3111E是MAXIM公司推出的全功能收發器,內部包含UART和RS232電平轉換兩個獨立的部分。UART部分包括兼容于SPI的串行接口、可編程波特率發生器、發送移位寄存器、接收移位寄存器、8字長的FIFO以及4種可屏蔽中斷發生器;RS232部分包括電泵電容、硬件關斷(SHDN管腳),具有±15kV靜電保護作用。它可以選擇1.8432MHz或3.6864MHz兩種晶振作為外部晶振,芯片能夠工作在300bps~230kbps波特率,本文使用的是3.6864MHz晶振。MAX3111E與連接電路如圖5.

      

     

      圖5 SPI轉UART電路

      MAX3111E的控制命令分為寫配置命令、讀配置命令、寫數據命令以及讀數據命令四種。本文寫入芯片的配置命令是0xE809,8bit數據長度、使能FIFO、發送中斷使能、波特率38400bps.數據的寫入需要在每個字節前面加上0x81,例如若要發送字節0x55,則需要從DIN端移位輸入0x8155.

      下面是連續發送n個字節的C語言代碼:

      SPI_WRITE_16BIT(0xE809);//寫配置命令

      delay_ms(10);//延時10ms

      SPI_WRITE_16BIT(0x8100+DATA1);//發送第1個數據DATA1

      delay_ns(250);//延時250ns

      SPI_WRITE_16BIT(0x8100+DATA2);//發送第2個數據DATA2

      ……

      delay_ns(250);//延時250ns

      SPI_WRITE_16BIT(0x8100+DATAn);//發送第n個數據DATAn

      使用MAX3111E時需要注意:

      1、片選信號CS的下降沿到時鐘SCLK信號的第一個上升沿至少要有100ns的時間延遲;

      2、芯片判定片選信號CS失效時,需要CS管腳保持高電平的時間至少為200ns.因此當需要連續發送數據時,兩個寫數據命令之間至少需要200ns,建議間隔250ns;

      3、寫配置命令需要晶振工作穩定,因此可以在寫配置命令后再讀配置,直到寫入和讀出的配置數據相應位相同時才保證芯片按需求配置完畢。

      3軟件設計

      3.1 GPIO模擬SPI實現方法

      使用GPIO模擬SPI,對選定的IO口進行時序上的電平操作,模擬出SPI時序。本文將SPI的電平操作采用宏定義的方式,可參考表3中的源代碼。

      

     

      程序按照SPI邏輯關系使用上述的宏定義,可以在選定的IO端口產生SPI信號,并且可以靈活的控制每個CS有效期間的時鐘數。使用GPIO模擬的SPI具有操作直觀、靈活可變等優點。相比較模擬得到的SPI,控制器上自帶的SPI接口基本不占用控制器資源,發送和接收的移位、時鐘信號的產生都交由內部SPI模塊處理。而GPIO模擬的SPI需要控制器不斷對IO進行操作,因此會占用控制器處理時間。時鐘信號也因對電平操作消耗機器周期,導致時鐘信號速度有限。

    c語言相關文章:c語言教程


    加速度計相關文章:加速度計原理


    關鍵詞: MSP430F149 GNSS

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 阿坝| 报价| 萨嘎县| 江川县| 华阴市| 凌海市| 盱眙县| 洞头县| 华蓥市| 灵武市| 马鞍山市| 盈江县| 原平市| 敦煌市| 东方市| 正蓝旗| 获嘉县| 黄龙县| 黄平县| 巴里| 囊谦县| 甘孜县| 太和县| 嘉善县| 平利县| 茌平县| 册亨县| 莱州市| 城口县| 四子王旗| 南和县| 张家港市| 即墨市| 和平县| 密云县| 孝昌县| 东莞市| 万山特区| 昭平县| 中阳县| 江阴市|