會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





U1RXREG 的RX8
新會員
註冊日期:
2018/09/07 13:43
所屬群組:
註冊會員
文章: 4
等級: 1; EXP: 21
HP : 0 / 5
MP : 1 / 15
離線
請問前輩關於UART,

PIC16FXXXX 當設定RX9=1,可以用RX9D判斷此位元.

那PIC32MX150F256H 當設定 UARTSetLineControl(UART1,UART_DATA_SIZE_9_BITS), 在<p32xxxx.h>無定義 U1RXREGbits.RX8.

請問在32bit如果要判斷RX9D, 軟體該如何設計?

2018/11/22 13:50
轉換PDF檔 列印


Re: U1RXREG 的RX8
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14805
等級: 73; EXP: 53
HP : 1087 / 1813
MP : 4935 / 81106
離線
Microchip UART 九位元傳輸一般是使用在下列兩種模式:

1. RS-485 半雙工裡的 9-bit Address Mode。這時接收端必須設定 ADDEN 位元 = 1,將位址比較功能打開。這時接收只會接收 RxD8 位元 = = 1 的資料進入 RxD FIFO 裡同時也產生接收中斷。要是進來的資料 RxD8 = = 0 的話,接收將會忽略資料也不會發生中斷。一旦接收到 Address 的資料格式且比對其位址無誤,接收端必須關閉 ADDEN 位元進入一般資料接收模式接收後面的一般資料。

對應到 RS-485 半雙工的應用就是: Master 發出 Slave 端帶 Address(ID) 的資料 (Rxd8=1) + 一般的控制命令 or 資料 (RxD8=0)。Slave 先判斷是不是我的 ID,如不是的話忽略此命令。如 IS Match 的話就關閉 ADDEN 開始接收屬於這個 ID 的資料。

發送端需啟用 9-bit 傳輸功能,自行填寫 TxD9 位元的傳送資料。

2. 另外一中傳輸就是 奇、偶位元的檢查。在 8-bit PIC 裡這個位元必須自己用位元相加的運送得出 奇、偶位元值後填入 TxD8 後再啟動傳送機制。接收也是要用軟體方式寄送出這 RxD8 奇、偶位元的檢查。


16-bit 以上的元件 奇、偶位元 的產生及比較都是由硬體來完成的。

2018/11/22 15:25
轉換PDF檔 列印


Re: U1RXREG 的RX8
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14805
等級: 73; EXP: 53
HP : 1087 / 1813
MP : 4935 / 81106
離線
PIC32 元件我不知道是否有第 9-bit 的檢查函數。不過可以用最基本的位元結構方式去設定或檢查。

if (U1RXREGbits.RX8 == 1)

2018/11/22 15:30
轉換PDF檔 列印


Re: U1RXREG 的RX8
新會員
註冊日期:
2018/09/07 13:43
所屬群組:
註冊會員
文章: 4
等級: 1; EXP: 21
HP : 0 / 5
MP : 1 / 15
離線
#include <p32xxxx.h> 內無Rx8, 所以編譯過不去.



我有試著這麼做,編譯也是失敗.

volatile bit RX8 @((unsigned)&U1RXREG*8)+8;

volatile union {
struct {
unsigned RX8:1;
};
} U1RXREGbits @0x6030;

2018/11/22 15:59
轉換PDF檔 列印


Re: U1RXREG 的RX8
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14805
等級: 73; EXP: 53
HP : 1087 / 1813
MP : 4935 / 81106
離線
PIC32 採不一樣的架構。這第 9 個位元跟 b0~b7 的接收暫存器的 b8 就是了。 整個接收,發送暫存器的長度是32個位元,但只用到前面的 b0~b8.

2018/11/22 17:37
轉換PDF檔 列印


Re: U1RXREG 的RX8
新會員
註冊日期:
2018/09/07 13:43
所屬群組:
註冊會員
文章: 4
等級: 1; EXP: 21
HP : 0 / 5
MP : 1 / 15
離線
您講的我知道. 沒有辦法幫助我.

2018/11/23 08:54
轉換PDF檔 列印


Re: U1RXREG 的RX8
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14805
等級: 73; EXP: 53
HP : 1087 / 1813
MP : 4935 / 81106
離線
參考一下底下的圖示,你可以看到第九個位元名稱為 UTX18 ,在 Data Sheet 的說明是: TX<8:0>: Data bits 8-0 of the character to be transmitted.
這位元的定義可以在 PIC32 該元件的標頭檔 xxxx.h 檔裡看到其位元結構的定義。可以直接程式裡使用該位元的定義。

在標準的 Data Sheet 因為篇幅關係說明的不夠詳細,一般還是要參考 PIC32MX Reference Manual 如下的下載網站:

http://hades.mech.northwestern.edu/im ... _PIC32ReferenceManual.pdf

PIC32MX Family Reference Manual
Section 21. UART 章節內的說明。

附加檔案:



jpg  擷取.JPG (47.73 KB)
16_5bf7698f5fb35.jpg 1083X263 px

2018/11/23 10:44
轉換PDF檔 列印


Re: U1RXREG 的RX8
新會員
註冊日期:
2018/09/07 13:43
所屬群組:
註冊會員
文章: 4
等級: 1; EXP: 21
HP : 0 / 5
MP : 1 / 15
離線
在 p32mx150f256h.h 內有U1RXREG.但無定義到 RX8.

.extern U1RXREG /* 0xBF806030 */
extern volatile unsigned int U1RXREG
__attribute__((section("sfrs")));

PIC32 該元件的標頭檔 xxxx.h 檔裡無看到其位元結構.
一開始發問時, 我就有提到.

2018/11/23 13:20
轉換PDF檔 列印


Re: U1RXREG 的RX8
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14805
等級: 73; EXP: 53
HP : 1087 / 1813
MP : 4935 / 81106
離線
沒有 U1RXREG 的位元結構宣告。

1. 載入到接收變數後直接對 rx8 用 AND/OR 做指定位元的邏輯判斷。
2. 宣告一個位元的 union 的共用結構變數,將接收值傳進來後就可以用位元的判斷或運算。

2018/11/26 14:53
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
Microchip連結

網頁捷徑
2019 Summer Elite 報名
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project