• slider image 71
  • slider image 72
  • slider image 73
:::


Browsing this Thread:   1 Anonymous Users






U1RXREG 的RX8
#1
新會員
新會員


查看用戶資訊
請問前輩關於UART,

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

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

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

發表於: 2018/11/22 13:50
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: U1RXREG 的RX8
#2
版主
版主


查看用戶資訊
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
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: U1RXREG 的RX8
#3
版主
版主


查看用戶資訊
PIC32 元件我不知道是否有第 9-bit 的檢查函數。不過可以用最基本的位元結構方式去設定或檢查。

if (U1RXREGbits.RX8 == 1)

發表於: 2018/11/22 15:30
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: U1RXREG 的RX8
#4
新會員
新會員


查看用戶資訊
#include <p32xxxx.h> 內無Rx8, 所以編譯過不去.



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

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

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

發表於: 2018/11/22 15:59
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: U1RXREG 的RX8
#5
版主
版主


查看用戶資訊
PIC32 採不一樣的架構。這第 9 個位元跟 b0~b7 的接收暫存器的 b8 就是了。 整個接收,發送暫存器的長度是32個位元,但只用到前面的 b0~b8.

發表於: 2018/11/22 17:37
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: U1RXREG 的RX8
#6
新會員
新會員


查看用戶資訊
您講的我知道. 沒有辦法幫助我.

發表於: 2018/11/23 8:54
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: U1RXREG 的RX8
#7
版主
版主


查看用戶資訊
參考一下底下的圖示,你可以看到第九個位元名稱為 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 章節內的說明。

Attach file:



jpg  (0.00 KB)


發表於: 2018/11/23 10:44
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: U1RXREG 的RX8
#8
新會員
新會員


查看用戶資訊
在 p32mx150f256h.h 內有U1RXREG.但無定義到 RX8.

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

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

發表於: 2018/11/23 13:20
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: U1RXREG 的RX8
#9
版主
版主


查看用戶資訊
沒有 U1RXREG 的位元結構宣告。

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

發表於: 2018/11/26 14:53
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
You cannot start a new topic.
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]