最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

SSI(USCI)相關(guān)注意事項(xiàng)以及常見問題

2023-04-13 09:41 作者:賽元MCU平臺(tái)  | 我要投稿

? ? ? ? 賽元部分芯片具有 SSI(USCI)功能,稱為三合一接口,是芯片內(nèi)部集成了三個(gè)三選一 通用串行接口電路,可方便 MCU 與不同接口的器件或者設(shè)備的連接。用戶可通過配置寄存 器 OTCON 的 USMD1[1:0]、USMD0[1:0],或 TMCON 的 USMD2[1:0]位將 USCI 接口配置 為 SPI、TWI 和 UART 中任意一種通信模式。本文檔主要包含使用 SSI(USCI)過程中出 現(xiàn)的注意事項(xiàng)以及常見問題,有以下內(nèi)容:?

1、SSI/USCI 中的 UART 通訊使用注意事項(xiàng);?

2、SPI 通訊注意事項(xiàng);?

3、TWI(IIC)通訊注意事項(xiàng);?

4、使用硬件 TWI(IIC)出現(xiàn)通信數(shù)據(jù)錯(cuò)誤的情況是什么原因;?

具體內(nèi)容如下:?

1、SSI/USCI 中的 UART 通訊使用注意事項(xiàng)?

1) USCI 的 UART 發(fā)送中斷標(biāo)志 TI 和接收中斷標(biāo)志 RI 在同一個(gè)寄存器上,此寄存器 不能位操作,所以在清除 TI 和 RI 時(shí)會(huì)對(duì)整個(gè)寄存器進(jìn)行與操作,這樣當(dāng) UART 進(jìn) 行全雙工通信時(shí)發(fā)送和接收中斷有可能同時(shí)產(chǎn)生,或者是兩者之間間隔時(shí)間很短, 會(huì)出現(xiàn) TI 或者 RI 被誤清除導(dǎo)致中斷丟失的風(fēng)險(xiǎn),因此在全雙工通信應(yīng)用場(chǎng)景中, 通信需要有容錯(cuò)機(jī)制,不能因?yàn)槟炒沃袛鄟G失就導(dǎo)致通訊崩潰,在發(fā)送數(shù)據(jù)后不能 通過死等發(fā)送標(biāo)志來判斷發(fā)送是否完成,需要加入超時(shí)監(jiān)測(cè)保證在一段時(shí)間后可以 退出等待;?

2) 對(duì)于通信,要特別注意通信雙方的配合,通信邏輯要特別注意,做好通信的錯(cuò)誤冗 余,不能因?yàn)槟骋淮位蛘呤悄硯状瓮ㄐ佩e(cuò)誤就導(dǎo)致通信出現(xiàn)終止現(xiàn)象,建議在通信 超過一定時(shí)間沒有接收到正確的數(shù)據(jù)后重新啟動(dòng)通信,重新啟動(dòng)通信包括通信相關(guān) 的寄存器清零再重新配置,以及通信使用到的一些變量,包含數(shù)據(jù)緩存數(shù)組,以及 計(jì)數(shù)的相關(guān)變量都要進(jìn)行清零,以保證通信邏輯出錯(cuò)后重新啟動(dòng)通信,可以使通信 從最原始狀態(tài)開始運(yùn)行。?

2、SPI 通訊注意事項(xiàng)?

1) 由于 SPI 協(xié)議只看邊沿信號(hào),所以如果通信線有干擾導(dǎo)致通信錯(cuò)位后比較容易導(dǎo)致 通信數(shù)據(jù)一直出錯(cuò),一般建議當(dāng)檢測(cè)到通信數(shù)據(jù)出錯(cuò)后重置一下 SPI,以避免因?yàn)?噪聲等原因誤接收 CLK 后導(dǎo)致通訊數(shù)據(jù)一直錯(cuò)下去;

?2) 為了避免 SPI 功能打開時(shí)誤產(chǎn)生 CLK(此時(shí)管腳從 IO 切換到 SPI 功能),必須在打 開 SPI 前根據(jù) CLK 的空閑電平設(shè)置,先將 IO 口設(shè)置為對(duì)應(yīng)的電平狀態(tài)。如設(shè)置 CPOL = 0 空閑為低電平時(shí)需要將 CLK 對(duì)應(yīng)的 IO 設(shè)置輸出 0 再打開 SPI(SPEN = 1),反之亦然,否則會(huì)導(dǎo)致通訊錯(cuò)位;?

3) 95F 系列 MCU 的 SPI 具備 8 位和 16 位傳輸模式,SPI 設(shè)置為 16 位模式時(shí),必須 先寫入高字節(jié) SPDH[7:0],后寫入低字節(jié) SPDL[7:0],低字節(jié)寫入后立刻開始傳送, 注意:SPDH[7:0]僅用于 16 位模式;?

4) 95F 系列 SPI 最高速率可達(dá)到 16MHz,但是當(dāng)通信口線上的負(fù)載增加時(shí),端口輸出 的波形會(huì)產(chǎn)生畸變,引起通信時(shí)序異常,所以當(dāng) SPI 通信速率超過 10MHz 時(shí),用 戶需要考慮口線上的負(fù)載大小以保證正常的通信,一般加上拉電阻可以改善波形畸 變的情況。?

3、TWI(IIC)通訊注意事項(xiàng)?

1) 92F 系列 MCU 的 TWI 只支持從機(jī)模式,不支持主機(jī)模式,IIC 主機(jī)模式需要使用 軟件模擬,92F 系列從機(jī)模式下最高支持 200K/bit 的通信速率;?

2) 95F 系列 MCU 的 TWI 支持主從機(jī)模式,最高通信速率可達(dá) 400KHz,做主機(jī)時(shí)由 于沒有中斷標(biāo)志判斷 STOP,用戶在使用時(shí)需在發(fā)送 STOP 信號(hào)前后加短暫延時(shí)防 止通信出錯(cuò),延時(shí)時(shí)間與通信速率類似;?

3) 95F 系列 TWI 主機(jī)模式下,為防止 TWI 通信時(shí) 1byte 數(shù)據(jù)還沒有發(fā)送完就發(fā)送 Start 信號(hào)導(dǎo)致通信異常,需要在先執(zhí)行 AA=0,延時(shí)一段時(shí)間后關(guān)閉 TWI 功能,再開啟 TWI 后再啟動(dòng) Start 信號(hào),如下: US0CON0&=0xF7; //先將 AA 置 0 Delay (); //延時(shí)一段時(shí)間,延時(shí)時(shí)間長度要大于 1byte 數(shù)據(jù)的傳輸時(shí)間 US0CON0 &=0x7f; //關(guān)閉 TWI US0CON0 |= 0x80; //打開 TWI?

4) 使用 TWI 功能時(shí),建議用戶在中斷服務(wù)函數(shù)中通過狀態(tài)標(biāo)志位 STATE[2:0]查詢通 信狀態(tài),再配合通信數(shù)據(jù)邏輯進(jìn)行數(shù)據(jù)處理和發(fā)送;?

4、使用硬件 TWI(IIC)出現(xiàn)通信數(shù)據(jù)錯(cuò)誤的情況是什么原因?

使用 92F 系列芯片時(shí),通訊速率較快時(shí)(超過 100K),可能會(huì)出現(xiàn)通信數(shù)據(jù)出錯(cuò)的情況, 錯(cuò)誤表現(xiàn)可能有以下 2 種情況:?

1) 發(fā)送的數(shù)據(jù)是上 1byte 的數(shù)據(jù);?

2) 發(fā)送的數(shù)據(jù)會(huì)錯(cuò)位,表現(xiàn)為本次發(fā)送的數(shù)據(jù)既有當(dāng)前 byte 的前幾位,又有前一個(gè) byte 的后幾位數(shù);?

出現(xiàn)以上兩種情況的原因?yàn)椋?2F 系列芯片的 CPU 處理速度跟不上通信的速度,IIC 通信 協(xié)議的 CLK 線是由主機(jī)控制的,通常情況下當(dāng)通信速度較快時(shí),數(shù)據(jù)間的發(fā)送間隔也比 較短,當(dāng)從機(jī)發(fā)送完 1byte 數(shù)據(jù)之后,一般的寫法是在 IIC 中斷中準(zhǔn)備下一個(gè) 1byte 數(shù)據(jù) 的發(fā)送,當(dāng)通信速度很快時(shí),從機(jī)還沒來得及把需要發(fā)送的數(shù)據(jù)賦值給發(fā)送數(shù)據(jù)緩存寄存 器,主機(jī)就發(fā)送了下一個(gè) byte 的 CLK 信號(hào)過來,從機(jī)會(huì)把上一個(gè) byte 的數(shù)據(jù)發(fā)送出去, 當(dāng)給數(shù)據(jù)緩存寄存器賦值后又會(huì)發(fā)送當(dāng)前數(shù)據(jù),所以會(huì)出現(xiàn)數(shù)據(jù)錯(cuò)誤的情況。?

針對(duì)以上情況,解決方案為:?

1) 減小 IIC 通信速率;?

2) 較小 IIC 中斷處理,加快數(shù)據(jù)緩存寄存器的賦值,盡快準(zhǔn)備好數(shù)據(jù);?

3) 增加 byte 與 byte 之間的時(shí)間間隔,給從機(jī)留夠足夠的時(shí)間進(jìn)行中斷處理和數(shù)據(jù)賦值。


SSI(USCI)相關(guān)注意事項(xiàng)以及常見問題的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
金平| 松原市| 玛纳斯县| 冀州市| 文安县| 钦州市| 西平县| 紫金县| 沅陵县| 厦门市| 漯河市| 肇州县| 沧州市| 新泰市| 阜新市| 饶平县| 财经| 班戈县| 敖汉旗| 扎囊县| 亚东县| 宜黄县| 土默特左旗| 松原市| 康乐县| 五寨县| 汝州市| 汝南县| 宣汉县| 许昌市| 秦安县| 遂川县| 西乌珠穆沁旗| 手游| 滨海县| 本溪市| 齐齐哈尔市| 天镇县| 松潘县| 邵东县| 无极县|