絕對式編碼器的ssi協議 stm32 hal

2021-10-07 14:25:06 字數 1174 閱讀 1433

雖然開始研究的時候比較疑惑,其實還是比較簡單的。十幾分鐘就可以全部掌握。

編碼器的廠商為了抗干擾,在ssi訊號使用了rs422,rs422和rs485這類的都是通訊協議而已,打個比方,只是你去往同一城市的不同道路而已,最終還是你過去,你並沒有變化。

編碼器的ssi協議其實非常的簡單,他是同步訊號,類似spi。

ssi為同步串聯訊號,實際的兩對rs422(rs422四根線),一對時鐘觸發,一對資料傳送。

如圖所示,編碼器的絕對位置值由接收裝置的時鐘訊號觸發、從格雷碼高位(msb)開始,輸出與時鐘訊號同步的序列訊號。時鐘訊號從接收裝置發出,以編碼器的總位數輸出n個中斷脈衝,當不傳送訊號時,時鐘和資料位均是高位,在時鐘訊號的第乙個下降沿,當前值開始貯存,從時鐘訊號上公升沿開始,資料訊號開始傳送,乙個時鐘脈衝同步一位資料。

t = 4~11us

tcal : 1us~5.5us

n = 資料字長,24位,25位26位和32位

推薦讀取資料的最佳位置不是時鐘的下降沿,而是應該是下降沿與下乙個上公升沿的中間位置。

這也是為什麼spi不適用的原因,資料可能會出錯。

ssi協議只需要兩根線,乙個是時鐘,乙個是資料 所以 引腳配置

乙個引腳為輸出模式,上拉

乙個引腳為輸入模式,上拉

舉例子,t = 125khz, tcal = 4us

偽**:

時鐘引腳高電平持續幾ms //保證時鐘為高電平,並且錯過t2

時鐘引腳低電平4us

時鐘引腳高電平4us

/* 保證時鐘為高電平,並且錯過t2 */

時鐘引腳高電平持續幾ms

/* 第乙個時鐘資料不需要 */

時鐘引腳低電平4us

時鐘引腳高電平4us

/* 讀資料 按照需要反覆此步驟 直到讀取完資料 */

時鐘引腳低電平2us

讀取資料

時鐘引腳低電平2us

時鐘引腳高電平4us

重點是us的實現,對此具體見我的其他文章。先讀的資料是最高位,並且讀完的資料是格雷碼,轉換一下就可以得到資料。

增量式編碼器和絕對式編碼器

根據其刻度方法及訊號輸出形式,可分為增量式 絕對式以及混合式三種。1 增量式編碼器 增量式編碼器是直接利用光電轉換原理輸出三組方波脈衝a b和z相 a b兩組脈衝相位差90。從而可方便的判斷出旋轉方向,而z相為每轉乙個脈衝,用於基準點定位。它的優點是原理構造簡單,機械平均壽命可在幾萬小時以上,抗干擾...

stm32 SSI讀編碼器

uint32 t read as5311chip void as5311 clk h delay us 10 return raw value void as5311 analyzessicode void 獲取0 4096 else else seg32data.all seg32data.all...

光電式絕對編碼器

絕對編碼器 光電式絕對編碼器的碼盤如圖12.3.1所示,它是在一塊圓形玻璃上採用腐蝕工藝刻有透光和不透光的碼形,其中黑的區域為不透光區,用 0 表示 白的區域為透光區,用 1 表示,如此,在任意角度都有對應的二進位制編碼。碼盤分成四個碼道,每一條碼道對應乙個光電器件,並沿碼盤的徑向排列。當碼盤處於不...