RT,之前有在F7的板子上面實作過串口通信,當時在Windows下的串口助手以及Ubuntu下的cutecom還有自己寫的程式都能夠正常接收資料包。
但是現在因為專案需求,把F7上面的程式移植到了F4上面,出現的問題在于,目前F4能夠與Win下面的串口助手正常通信,然而到了Linux下面就不行了,具體表現為在USB口剛接上,cutecom一開始打開后會接收到一段資料,但后面就沒有資料被接收到了。
Linux下的ttyUSB0的權限也全部打開了,也還是不行,請問有人遇到過這種問題可以解答一下嗎?
我現在懷疑是不是底層程式的原因,因為在F7中,我是根據原子的開發手冊內部寫的,利用暫存器發送資料。
...
for(i=0; i<len+4; i++) // 發送資料
usart1_send_char(send_buff);
}
//串口1發送1個字符
//ch:要發送的字符
void usart1_send_char(u8 ch)
{
while((USART1->ISR&0X40)==0);
USART1->TDR=ch;
}
但是在F4中貌似沒有這個ISR暫存器,因此我就直接使用了
HAL_UART_Transmit(&UART1_Handler, send_buff, sizeof(send_buff), 0xffff);
進行資料的發送。
會不會是這方面的原因,有了解的大佬可以指點一下嗎
uj5u.com熱心網友回復:
如果你確認你能跟win的串口助手通信,那么也肯定能和Ubuntu下的串口組手通信,如果不能,那么就是Ubuntu的驅動有問題uj5u.com熱心網友回復:
我在Linux下重新裝了CH340的驅動,但還是不行,以前在F7的板子上是可以的,但是把程式移植到F 4上面就不行了,不知道為什么
uj5u.com熱心網友回復:
如果windows可以通信,代表你的程式沒問題轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/269846.html
標籤:單片機/工控
下一篇:兩個modbus從站之間怎么通訊
