MTK 解決藍芽串列埠MMI不能收發資料的問題

2021-07-24 17:48:28 字數 1106 閱讀 3941

硬體平台:mt2503a

軟體平台:coretek03a_11c_pcb01_gprs_mt6261_s00.maui_11c_w13_52_sp3_v2_f32

想在mt2503a上 使用藍芽串列埠收發資料,用手機藍芽助手測試,發現每次傳送資料,都是原樣返回,且mmi不能接收到ready to read的訊息,mmi只能接收到connect 和

disconnect事件。

bt spp從底層到應用層的訊息傳遞順序:

driver-->mod_bt-->sppsrv.c-->btmmispp.c

後來看文件發現,bt spp server預設將資料傳送給mod_atci,而不是mod_mmi。

如果接收到的資料是 at開頭、\r\n結尾的,則進入custom_command_hdlr()處理,否則進入l4 atci的流程中,這個流程是被封裝的,**不可見。

經過多次測試發現,mtk是這麼管理uart的,每個uart都有乙個owner,乙個模組只能當uart屬於自己的時候,讀寫操作才能成功。

使用srv_spp_write()來傳送資料是不會成功的,因為bt spp uart預設屬於mod_atci. 同樣ready to read 訊息也不會傳送到mmi。

在custom_command_hdlr()中是使用rmmi_write_to_uart()來傳送資料,但是這個函式在mmi_bt_spp_connect_ind()中呼叫,不能成功傳送資料,

這個函式是被mtk封裝好的,不可見。

u32 srv_spp_write(u32 conn_id, void* buf, u32 size)

要想成功接收、傳送藍芽串列埠資料,測試有效的做法是:

1 接收:

在custom_cmd_table【】中新增command string和相應的handler function,這樣就能在custom_command_hdlr()接收。

傳送at開頭,\r\n結尾的資料給裝置;

2 傳送:

以mod_atci為owner 去傳送資料。

example:

樹莓派 解決樹莓派連線藍芽不能聽見聲音

這個問題真的弄得頭大,試了許多方法,終於好了,根據下面步驟來,就可以使藍芽聽聲了 也就是重新配置一下藍芽吧 公升級安裝藍芽相關軟體包 sudo apt get update sudo apt get upgrade y sudo apt get dist upgrade y sudo apt get...

基於433MHz無線串列埠,多發一收解決方案

一 無線發展背景 隨著科學技術的飛速發展,智慧型家居 智慧型農業 智慧型城市如雨後春筍。而這些行業的發展離不開無線的應用。傳統的有線連線不僅僅是成本高,包括佈線安裝 維護等也是成本巨大。並且機動性也很差,不能滿足智慧型行業的發展需求,因此無線的應用走上了智慧型行業發展的舞台。在無線傳輸的使用中,43...

FC6 中串列埠不能正常使用的原因與解決辦法

新安裝了個fc6,用來調我的sigmal 8260的板子,由於對xen感興趣,索興在安裝fc6時就將xen選上了,裝完後,感覺不錯,但是當用串列埠時就發現不能正常使用,因為我的pc只有乙個串列埠出來,即ttys0,可以用minicom正常開啟,但就是不能工作,後來想想可能是xen的配置有問題,我就又...