ch432t的linux驅(qū)動,無論設(shè)怎樣的spi頻率,ch43x_spi_test測試無法通過

使用官方提供的ch432t linux驅(qū)動(ch432ser_linux/ch432.c at main · WCHSoftGroup/ch432ser_linux · GitHub),ch43x_spi_test測試無法通過。無論我們怎么設(shè)置spi的頻率,都不行。


但是,當我們在ch43x_spi_test接口中增加9秒的讀寫寄存器操作后,5MHz(含)以下的頻率,能夠正常通信,應用層上的串口也正常。此時如果把spi頻率大于5MHz時,ch43x_spi_test將失??;

??

tatic int ch43x_spi_test(struct uart_port *port)

{

.....


// 增加start。。。。

u8 cnt=3'

while(cnt--)

{

ch43x_port_write(port, CH43X_SPR_REG, 0x55);

mdelay(1500);

ch43x_port_read(port, CH43X_SPR_REG);

mdelay(1500);

}


// 增加end。。。。



ch43x_port_write(port, CH43X_SPR_REG, 0x55);

val = ch43x_port_read(port, CH43X_SPR_REG);

if (val != 0x55) {

dev_err(&s->spi_dev->dev, "UART %d SPR Test Failed.\n", port->line);

return -1;

}

....

}




ch34x_spi_test函數(shù)用于測試SPI通信,如果未通過說明硬件線路存在問題或芯片未處于正常工作狀態(tài),可發(fā)原理圖我們看下。



無標題.png


你好,由于我們發(fā)現(xiàn)在我們的linux內(nèi)核中,spi_write_then_read接口會產(chǎn)生兩個cs信號,所以我們使用了一個gpio管腳,直接連接到ch432t的cs管腳,并在調(diào)用ch43x_port_read,ch43x_port_write等接口的發(fā)送數(shù)據(jù)前后,增加cs管腳的拉低或者拉高,實現(xiàn)一次的cs片選。后來我們參考linux kernel spi write_and_read clk不間斷_linux spi read執(zhí)行完后cs就會拉高嗎-CSDN博客?這個博客所說的進行修改,確實有效,但在串口通信下,上位機給串口發(fā)送的數(shù)據(jù)接收不到,而串口發(fā)送過來的數(shù)據(jù)可以接收,目前我們?nèi)员3质褂胓pio管腳直接連接到ch432t芯片的cs片選腳,上面是我們的電路圖,除了cs那個改為gpio直接連接外,cpu端輸出的sdi和sdo已改為交叉連接,ch432t端保持不變。


目前的狀況有:

1. 如果保持ch43x_spi_test中增加的測試代碼,能夠正常進行串口通信,但上位機發(fā)送數(shù)據(jù)快的情況下,驅(qū)動的接收一直出不來,發(fā)送慢時就正常;


2.?如果取消ch43x_spi_test中增加的測試代碼,ch43x_spi_test就測試不通過,linux系統(tǒng)創(chuàng)建的驅(qū)動無法進行通信


麻煩官方看一下,這個電路是否存在問題?




另外,如何判斷芯片的工作正常還是不正常的?


1、如果硬件上正常,則任何時候調(diào)用ch43x_spi_test都一定能通過,不會存在加延時和不加延時有差異的問題,該現(xiàn)象需要抓SPI時序看下,對比有無delay的區(qū)別;

2、根據(jù)上面的描述,懷疑是對CS的控制存在問題,未能滿足芯片時序要求,同樣需要先檢查SPI時序,可輸出時序和驅(qū)動日志發(fā)至郵箱yz@wch.cn

3、電路設(shè)計沒問題


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

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