文檔
本文檔被分為6頁
1。本頁面描述了連接到國際空間站的USB,USB驅動程序的安裝和設置USB-ISS的操作模式
。五進一步頁面描述的操作命令和引導加載
器2 I2C操作,描述了所有可用的
I2C命令3 。SPI操作,介紹了SPI通信的
格式4 。串行操作,介紹如何發送和接收串行數據
。5 。I / O操作,介紹如何設置引腳的高/低和讀取數字或模擬
輸入6 。Boot Loader的,介紹如何在USB -ISS的固件更新。
第一步-獲取驅動
程序在連接ISS的USB模塊之前,你應該下載的驅動程序,並把它解壓到一個臨時文件夾。現在ISS的USB模塊連接和瀏覽Windows的臨時文件夾,並安裝驅動程序 。USB-ISS現在將顯示為一個COM端口。
哪個COM端口
安裝驅動程序,將USB模塊插入一個空閒的USB端口後,請右擊「我的電腦」桌面上的圖標,並選擇「屬性- >硬件- >設備管理器 「。現在,向下滾動並打開「端口(COM和LPT)」選項卡 。您應該看到USB串口號,下面的例子中的COM5。如果你想改變的COM端口號-只要右擊它,選擇屬性,選擇高級,並從可用列表中選擇COM端口號 。COM端口默認情況下為9600波特,8數據位,無奇偶校驗,一個停止位。
連接
下圖顯示了各種模式的連接。
USB旁邊的 電源選擇跳針,接通 電源連接上,3.3V模式拔下 | |
| I / O | SPI | 串行 | I2C | I2C +串口 | 3.3V / 5V | 3.3V / 5V | 3.3V / 5V | 3.3V / 5V | 3.3V / 5V | I/O4 | SDI | I/O4 | SDA | SDA | I/O3 | SCK | I/O3 | SCL | SCL | I/O2 | SDO | TX | I/O2 | TX | I/O1 | / CE | RX | I/O1 | RX | 0V接地 | 0V接地 | 0V接地 | 0V接地 | 0V接地 | | | | | | |
Bootloader的鏈接 - 短路將進入bootloader模式 | |
電源選擇跳針: 3.3V或5V
5V鏈接,拔下斷開為3.3V
電壓支持3.3V或5V。電流20mA,5V時是連接電源選擇引腳選擇與LED,國際空間站的USB模塊可提供高達80mA的外部設備。當鏈接被刪除,一個3.3V穩壓器提供電源 。該穩壓器能夠為50mA,所以當運行在3.3V至30mA電路。如果應用程序需要比這更多的,或有自己的電源,然後離開3.3V/5V引腳。不適用你自己到這個引腳電壓。
I / O引腳
的每個I / O引腳,1至4,可單獨選擇為模擬輸入或數字輸入或數字輸出
電壓大於供給的輸入不會接受,所以在3.3V工作時的投入是不是5V寬容。
模擬輸入範圍為0V至供應範圍0-1023(10位A / D轉換)。
SCL和SDA
引腳I2C總線的連接。他們應該直接連接到您的I2C器件的SCL和SDA引腳 。的USB - ISS模塊始終是一個總線主機,並與PCB上的4.7K上拉電阻安裝 。這些電阻在其他模式下自動斷開。
SDI,SCK,SDO和CE
SDI是SPI輸入到USB -國際空間站,將它連接到SDO您的設備上。
SDO是從USB - ISS的SPI輸出,在您的設備連接到SDI
,SCK為SPI時鐘從USB - ISS的輸出,將它連接到SCK您的設備上。
CE是低電平有效芯片使能信號,在您的設備連接到CE。
Tx和Rx
這些邏輯電平信號,而不是RS232 不要連接RS232端口,而無需使用一個合適的RS232的邏輯電平逆變器芯片 。
0V接地
為0V的接地引腳必須連接到0V(接地)您的設備上 。
設置命令
的USB國際空間站的命令(為0x5A)是用於內部運作。的三個子命令:
命令 | 子命令 | 說明 |
USB ISS(為0x5A) | ISS_VERSION(0X01) | 返回3個字節,模塊ID(7),固件版本(目前為2),和目前的經營模式。 |
USB ISS(為0x5A) | ISS_MODE(0X02) | 設置的操作模式,I2C/SPI/Serial等詳見下一節 |
USB ISS(為0x5A) | GET_SER_NUM(0x03)的 | 返回的模塊唯一的8字節的USB序列號。 |
國際空間站的版本將返回三個字節 。首先是模塊ID,這將始終是7。第二個字節是固件版本號。第三個字節是當前的操作模式,ISS_MODE 。這是初始化為0x40的(I2C S_100KHZ)上電。
範例:
發送為0x5A,0x01的
接收為0x07,0X02,0x40的。
GET_SER_NUM將返回獨特的模塊,8個字節的USB序列號
。例
:發送為0x5A,0x03的
。接收0x30,0x30,0x30,0x30,0x30,0x30,0x30,成0x31 。(這是「00000001」)
接收到的序列號將永遠是ASCII數字範圍為「0」到「9」(0x30到0x39) 。
ISS_MODE設置的操作模式。這台模塊的I / O引腳和硬件所需的模式。有4種工作模式(I2C,SPI串口和I / O)一些可以合併的 。I2C模式進一步細分成各種固定頻率和使用的軟件(位撞壞)或硬件I2C端口。全部名單:
操作模式 | 價值 |
IO_MODE | 0X00 |
IO_CHANGE | 0X10 |
I2C_S_20KHZ | 0x20的 |
I2C_S_50KHZ | 0x30 |
I2C_S_100KHZ | 0x40的 |
I2C_S_400KHZ | 0x50的 |
I2C_H_100KHZ | 0X60 |
I2C_H_400KHZ | 0x70 |
I2C_H_1000KHZ | 0x80的 |
SPI_MODE | 0x90 |
串行 | 0X01 |
我/ O_CHANGE是不是一個真正的操作模式。它是用來改變I / O模式之間的模擬輸入,數字輸入和數字輸出,不改變串行或I2C
設置I2C模式I/O1和I/O2引腳的I /
O串行模式將有I / I/O3 I/O4引腳O,
I2C和串行可以組合,例如I2C_S_100KHZ號(0x40)+串行(0X01)=是0x41。
SPI要求所有四個I / O引腳,所以有沒有其他選擇此模式。
IO_MODE |
I / O模式需要進一步IO_TYPE字節設置每個引腳的I / O型。 |
IO_TYPE字節是由4對位,一對為每個I / O引腳- 4B,4A,3B,3A,2B,2A,1B,1A |
每一對的是: | XB XA | |
| 0 0 | 輸出低 |
| 0 1 | 輸出高 |
| 1 0 | 數字輸入 |
| 1 1 | 模擬輸入 |
例如0x01的(二進制00000001)設置I/O1高輸出和I / O的2-4輸出低。
0xB4(二進制10110100)設置I/O4到數字輸入,I/O3,模擬輸入, I/O2 輸出到輸出高I/O1低
四個字節的命令來設置I / O模式是 :
ISS_CMD | ISS_MODE | IO_MODE | IO_TYPE(見上面的例子) |
為0x5A | 0X02 | 0X00 | 0xB4 |
I / O模式,可結合串行
模式相結合,與串行I/O1 RX引腳和I/O2是TX引腳 。只有I/O3和I / O可作為I / O引腳。
,這是一個6字節的setup命令。
ISS_CMD | ISS_MODE | IO_MODE +串口 | 波特率除數(高字節) | 波特率除數(低字節) | IO_TYPE(見上面的例子) |
為0x5A | 0X02 | 0X01 | 0X00 | 0x9B | 0XB0 |
在所有的模式設置命令,返回兩個字節。請參閱下面的響應字節。
波特率的計算公式是
:X =(48000000 /(16 +波特率))
-1例如,如果需要的波特率
為19200(4800萬/(16 * 19200))-1 = 155.25,因此我們將使用155
155 0x009B,所以我們設置的高字節為0x00,低字節到0x9B
,這裡有一些標準波特率 :
波特率 | 除數 | 高字節 | 低字節 |
300 | 9999 | 0x27 | 為0x0F |
1200 | 2499 | 0X09 | 有0xC3 |
2400 | 1249 | 0x04的 | 0xE1 |
9600 | 311 | 0X01 | 0x37 |
19.2K | 155 | 0X00 | 0x9B |
38.4K | 77 | 0X00 | 0x4D |
57.6K | 51 | 0X00 | 0x33 |
115.2K | 25 | 0X00 | 0 × 19 |
250K | 11 | 0X00 | 0x0B |
1M | 3 | 0X00 | 為0x03 |
串行模式1和2個停止位格式兼容,因為是傳送2個停止位,只需要接受1。沒有校驗。
IO_CHANGE
沒有真正的操作模式。它是用來改變I / O模式之間的模擬輸入,數字輸入和數字輸出,不改變串行或I2C設置 。只需要使用當您使用串行或I2C模式,你想改變I / O引腳。格式是:
ISS_CMD | ISS_MODE | IO_MODE | IO_TYPE(見上面的例子) |
為0x5A | 0X02 | 0X10 | 0xB4 |
在所有的模式設置命令,返回兩個字節。請參閱下面的響應字節。
I2C模式
有7上面詳細的I2C命令 。它們的不同之處僅在SCL的頻率,以及是否他們使用的軟件位撞壞驅動程序或PIC芯片的
I2C硬件I2C命令將自身的I / O引腳I/O1和 I/O2。這是一個4字節的設置命令。
ISS_CMD | ISS_MODE | I2C_MODE | IO_TYPE(見上面的I / O模式) |
為0x5A | 0X02 | 0X60 | 0x04的 |
這個例子將使用PIC芯片的硬件I2C外設初始化的I2C至100kHz。
I2C命令,可結合串行模式
相結合,與串行I/O1 RX引腳和I/O2是TX引腳。這是一個5字節的setup命令 。
ISS_CMD | ISS_MODE | I2C_MODE +串口 | 波特率除數(高字節) | 波特率除數(低字節) |
為0x5A | 0X02 | 0x71 | 0X00 | 0x9B |
波特率的計算公式是相同的I / O +串口 以上,在所有的模式設置命令返回兩個字節。請參閱下面的響應字節。
SPI模式
此模式要求所有四個I / O引腳,因此不能與串口,I2C或I / O相結合 參照上述連接圖引腳輸出。SPI模式是能夠在所有四種可能的時鐘相位。SPI_MODE命令(0x90)可結合相位選擇位。
SPI_MODE | 期 |
0x90 | 從有效轉換TX到空閒時鐘的時鐘的空閒狀態為低電平 |
0x91 | 從主動到空閒時鐘過渡TX,時鐘空閒狀態為高電平 |
0x92 | 從有效時鐘閒置,空閒狀態時鐘過渡Tx是低水平 |
0x93 | 從有效時鐘閒置,空閒狀態時鐘過渡Tx是高水平的 |
0x90是標準模式,使用SPI SRAM,EEPROM的等
設置SPI模式是一個4字節的命令:
ISS_CMD | ISS_MODE | SPI_MODE | SCK的除數 |
為0x5A | 0X02 | 0x90 | 0X01 |
在SCK除數設置SPI時鐘速度。計算公式為:
除數=(6000000/SCK
對於一個3MHz的SCK,除數=(3000000分之6000000)-1 = 1
對於500kHz的SCK,除數=(五十〇萬分之六百萬)-1 )-1 = 11
255個除數,只是23.44khz最慢的SCK
的0x01的最低應為除數,如果設置為0x00,它將會為0x01的相同 。
在所有的模式設置命令,返回兩個字節。請參閱下面的響應字節。
響應字節
模式設置幀的反應始終是兩個
字節,第一個字節是應答(0xff)的或NotACKnowledge(0X00
),如果你得到一個確認,那麼,第二個
字節將為0x00,如果你得到一個NACK,然後第二字節將被究其原因,如下:
0x05未知的命令
0x06的內部錯誤1}
為0x07內部錯誤2},你永遠不應該看到這些
在正常情況下的反應將變為0xFF,0X00
測試USB
我們有一個小的測試程序,這將讓你嘗試不同的操作模式的 USB模塊。這是Visual C#2010版。
| 左
圖像顯示硬件的測試,在400kHz I2C I / O。這是寫作和閱讀四個字節(32位)的整數。的I / O已被設置為模擬和顯示測量值。 在這裡,我們正在書寫和閱讀到一個SPI RAM。 | |
您可以下載的可執行文件 或完整的源代碼。