CH432T串口能發(fā)送消息但不能接受消息

寫SCR寄存器0x44 0x55讀都是返回7F。

上電初始化后打印寄存器信息:

LCR 03

MCR 0F

LSR 7F

MSR 00

IER 0F

FCR 83

IIR C1

寄存器值錯誤目前猜測是spi接口讀寫有問題,但不能進(jìn)一步深入了

uint8_t spi1_read_write_byte(uint8_t txdata)

{

? ? uint8_t rxdata;

? ? HAL_SPI_TransmitReceive(&g_spi1_handler, &txdata, &rxdata, 1, 1000);

? ? return rxdata; /* 返回收到的數(shù)據(jù) */

}

開發(fā)板STM32F407Zg。有知道的可以聯(lián)系我個(gè)人信息保護(hù),已隱藏

波特率都是115200,兩個(gè)串口發(fā)送消息都能正常接受到,所以比較好奇是哪里配置錯了。

/**************************************************************************

? ? ? ? ? 設(shè)置CH432串口0的寄存器


**************************************************************************/

div = ( Fpclk >> 4 ) / CH432_BPS;

DLM = div >> 8;

DLL = div & 0xff;

WriteCH432Data( CH432_LCR_PORT, BIT_LCR_DLAB );? ?/* 設(shè)置DLAB為1 */

WriteCH432Data( CH432_DLL_PORT, DLL );? ? /* 設(shè)置波特率 */

WriteCH432Data( CH432_DLM_PORT, DLM );

WriteCH432Data( CH432_FCR_PORT, BIT_FCR_RECVTG1 | BIT_FCR_RECVTG0 | BIT_FCR_FIFOEN );? ? /* 設(shè)置FIFO模式 14字節(jié)觸發(fā)*/

WriteCH432Data( CH432_LCR_PORT, BIT_LCR_WORDSZ1

| BIT_LCR_WORDSZ0 );? ?/* 字長8位,1位停止位、無校驗(yàn),如果需要調(diào)整這里按頭文件提示修改*/

WriteCH432Data( CH432_IER_PORT, BIT_IER_IEMODEM | BIT_IER_IELINES | BIT_IER_IETHRE | BIT_IER_IERECV );? ?/* 使能中斷 */

WriteCH432Data( CH432_MCR_PORT, BIT_MCR_OUT2 );//| BIT_MCR_RTS | BIT_MCR_DTR );? ?/* 允許中斷輸出,DTR,RTS為1 */


/**************************************************************************

? ? ? ? ? 設(shè)置CH432串口1的寄存器


**************************************************************************/

div = ( Fpclk >> 4 ) / CH432_BPS1;

DLM = div >> 8;

DLL = div & 0xff;

WriteCH432Data( CH432_LCR1_PORT, BIT_LCR_DLAB );? ?/* 設(shè)置DLAB為1 */

WriteCH432Data( CH432_DLL1_PORT, DLL );? ? /* 設(shè)置波特率 */

WriteCH432Data( CH432_DLM1_PORT, DLM );

WriteCH432Data( CH432_FCR1_PORT, BIT_FCR_RECVTG1 | BIT_FCR_RECVTG0 | BIT_FCR_FIFOEN );? ? ?/* 設(shè)置FIFO模式 14字節(jié)觸發(fā)*/

WriteCH432Data( CH432_LCR1_PORT, BIT_LCR_WORDSZ1

| BIT_LCR_WORDSZ0 );? ? /* 字長8位,1位停止位、無校驗(yàn) 如果需要調(diào)整這里按頭文件提示修改*/

WriteCH432Data( CH432_IER1_PORT, BIT_IER_IEMODEM | BIT_IER_IELINES | BIT_IER_IETHRE | BIT_IER_IERECV );? ? /* 使能中斷 */

WriteCH432Data( CH432_MCR1_PORT, BIT_MCR_OUT2);//| BIT_MCR_RTS | BIT_MCR_DTR );? ? /* 允許中斷輸出,DTR,RTS為1 */



您好,串口初始化部分沒什么問題,432的串口接受數(shù)據(jù)時(shí),您打印下IIR \LSR寄存器值,以及量一下INT#腳是否有正常的低電平產(chǎn)生,郵箱已給您發(fā)了一份可用的參考代碼


1: Write 0x80, Read 80

2: Write 0xaa, Read BF

3: Write 0x01, Read 01

4: Write 0x55, Read 7F

5: Write 0x08, Read 0F

測試讀寫,讀的和寫的都不對,在InitCH432前讀寫的


說明你的SPI 通訊不正常,如果有相關(guān)工具,建議您抓時(shí)序看下,可以先適當(dāng)降低SPI速率,確保主機(jī)SPI發(fā)送數(shù)據(jù)正常


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

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