CH432T讀寄存器問題

????最近linux用戶層開發(fā)ch432t的驅(qū)動(dòng),發(fā)現(xiàn)通過串口發(fā)送數(shù)據(jù)是正常的,但是就是讀取不正常,沒有接收的數(shù)據(jù)時(shí)讀取IIR寄存器值為0xc1,這個(gè)正常,但接收到數(shù)據(jù)時(shí)IIR的值0xc7,這個(gè)不符合技術(shù)手冊,如果此時(shí)再讀取LSR的值,返回?zé)o規(guī)律多個(gè)0x7f,讀取RBR的值也不對。后來我改用單片機(jī)調(diào)試也是這種問題。這是什么原因?下面是我單片機(jī)初始化ch432t的代碼

Fdiv = (1843200 / 16) / CH432T_Uart0_BPS; ? ? // 設(shè)置波特率

? ? high_byte = Fdiv / 256;

low_byte = Fdiv % 256;

CH432T_WriteByte(CH432T_IER0, 0x80);// 設(shè)置串口復(fù)位

CH432T_WriteByte(CH432T_LCR0, 0x80);// 設(shè)置DLAB 為1

CH432T_WriteByte(CH432T_DLL0, low_byte);// 設(shè)置波特率除數(shù)寄存器-低位?

CH432T_WriteByte(CH432T_DLM0, high_byte);// 設(shè)置波特率除數(shù)寄存器-高位

CH432T_WriteByte(CH432T_FCR0, 0xC7);// 設(shè)置FIFO控制寄存器,使能FIFO14字節(jié)緩沖

CH432T_WriteByte(CH432T_LCR0, 0x03);// 設(shè)置線路控制寄存器

CH432T_WriteByte(CH432T_IER0, 0x01);// 設(shè)置中斷使能寄存器

? ? CH432T_WriteByte(CH432T_MCR0, 0x08); ? ? ?// 允許中斷請求輸出

Fdiv = (1843200 / 16) / CH432T_Uart0_BPS; ? ? // 設(shè)置波特率

? ? high_byte = Fdiv / 256;

low_byte = Fdiv % 256;

CH432T_WriteByte(CH432T_IER1, 0x80);// 設(shè)置串口復(fù)位

CH432T_WriteByte(CH432T_LCR1, 0x80);// 設(shè)置DLAB 為1

CH432T_WriteByte(CH432T_DLL1, low_byte);// 設(shè)置波特率除數(shù)寄存器-低位?

CH432T_WriteByte(CH432T_DLM1, high_byte);// 設(shè)置波特率除數(shù)寄存器-高位

CH432T_WriteByte(CH432T_FCR1, 0xC7);// 設(shè)置FIFO控制寄存器,使能FIFO14字節(jié)緩沖

CH432T_WriteByte(CH432T_LCR1, 0x03);// 設(shè)置線路控制寄存器

CH432T_WriteByte(CH432T_IER1, 0x01);// 設(shè)置中斷使能寄存器

? ? CH432T_WriteByte(CH432T_MCR1, 0x08); ? ? ?// 允許中斷請求輸出



CH432T PCB原理就是按照技術(shù)手冊的 ,如下:blob.png

從IIR寄存器中讀出0xc7肯定是不對的。你的問題都是出現(xiàn)在讀上面,有沒有測試一下讀函數(shù)是否正常?

有一個(gè)SCR寄存器可以用來測試,先寫再讀,看看和寫的是否一致。另外初始化復(fù)位完成后延時(shí)10ms比較好。


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频