91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

芯片設(shè)計(jì)上的BUG

嵌入式電子創(chuàng)客街 ? 來源:嵌入式電子創(chuàng)客街 ? 作者:嵌入式電子創(chuàng)客街 ? 2022-10-26 09:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

近期白嫖君在使用GD32這款芯片時(shí)候,發(fā)現(xiàn)了一個(gè)大概率是芯片設(shè)計(jì)上的BUG,貼出來和大家分享一下。

我們在使用串口發(fā)送數(shù)據(jù)時(shí),無非是使用兩種方法,一種是逐字節(jié)發(fā)送,另一種是DMA發(fā)送。

af7164ca-54cb-11ed-a3b6-dac502259ad0.png

一般串口發(fā)送數(shù)據(jù)前,我們需要先查看TBE標(biāo)志位,判斷緩存區(qū)內(nèi)是不是已經(jīng)空了,如果空了我們才會往里填數(shù)據(jù)。

但是當(dāng)發(fā)送緩存區(qū)為空時(shí),并不代表我們的數(shù)據(jù)已經(jīng)實(shí)際發(fā)完了,只是代表緩存區(qū)內(nèi)的數(shù)據(jù)空了,這時(shí)物理意義上的發(fā)送可能還在進(jìn)行中,如果你使用RS485器件,這時(shí)候把發(fā)送使能關(guān)斷的話,就會丟失一個(gè)字節(jié)的數(shù)據(jù)。

因此,一般發(fā)送完成后,需要檢查TC標(biāo)志是不是已經(jīng)被拉高了,以此來判斷數(shù)據(jù)線上的數(shù)據(jù)是不是確實(shí)已經(jīng)發(fā)結(jié)束了。

void usart_sendbuf(uint32_t usart_periph, uint8_t *Buffer , uint16_t ucSend_num)
{        
    unsigned int i;
    usart_flag_clear(usart_periph, USART_FLAG_TC);  //在發(fā)送前要先清除TC
    for(i = 0; i < ucSend_num; i++)
    {        
        while(usart_flag_get(usart_periph, USART_FLAG_TBE) == RESET); 
        usart_data_transmit(usart_periph, Buffer[i]);
    }
while(usart_flag_get(usart_periph,USART_FLAG_TC)==RESET);
}

這次白嫖君的程序就是還按照這個(gè)套路來寫的,串口發(fā)送數(shù)據(jù)量比較大,在運(yùn)行一段時(shí)間后,程序突然就死機(jī)了,查看一下,是死在了最后一行等待TC標(biāo)志位這里。查看寄存器列表,TC始終為0。

af90f7fe-54cb-11ed-a3b6-dac502259ad0.png

下面是官方庫函數(shù)手冊上給出的說明:

afa87802-54cb-11ed-a3b6-dac502259ad0.png

TC標(biāo)識是受單片機(jī)硬件控制的,并不受程序影響,這里無法拉高九成九就是芯片BUG了,于是白嫖君谷歌了一下,發(fā)現(xiàn)也有人遇到類似問題:

afb65058-54cb-11ed-a3b6-dac502259ad0.png

針對這種情況,硬件上無法做出改善,只能從軟件上規(guī)避了:

void usart_sendbuf(uint32_t usart_periph, uint8_t *Buffer , uint16_t ucSend_num)
{        
    uint32_t i;
    uint32_t j = 0;
    
    usart_flag_clear(usart_periph, USART_FLAG_TC);  //為了使用TC,在發(fā)送前要先清除TC
    for(i = 0; i< ucSend_num; i++)
    {        
        while(usart_flag_get(usart_periph, USART_FLAG_TBE) == RESET); 
        usart_data_transmit(usart_periph, Buffer[i]);
    }
    while(usart_flag_get(usart_periph, USART_FLAG_TC) == RESET)
    {
        if(j++ >= 0xFFFF) //在這里加超時(shí)機(jī)制
        {
            break;
        }
    }        
}

引入超時(shí)機(jī)制,當(dāng)?shù)却龝r(shí)間超過設(shè)定閾值,則不再等待TC置位,以此來避免程序阻塞假死。

特別注意:出現(xiàn)這種情況目前來說可能GD全系都有可能存在這個(gè)問題,且不區(qū)分是USART0還是USARTx,同時(shí)似乎只在數(shù)據(jù)量較大時(shí)會出現(xiàn)此種情況。我以前用GD的片子也不少,從沒遇見過這種情況。特此說明,避免抬杠嘛~

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    463

    文章

    54281

    瀏覽量

    468321
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6078

    文章

    45548

    瀏覽量

    672689

原文標(biāo)題:國產(chǎn)單片機(jī)GD32 串口發(fā)送再現(xiàn)BUG?

文章出處:【微信號:嵌入式電子創(chuàng)客街,微信公眾號:嵌入式電子創(chuàng)客街】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    Linux內(nèi)核bug狩獵指南:從棧跟蹤到修復(fù),官方文檔教你搞定系統(tǒng)核心故障

    內(nèi)核是 Linux 系統(tǒng)的 “心臟”—— 一旦它出 bug,小則功能異常,大則系統(tǒng)崩潰、死機(jī)。但內(nèi)核 bug 往往藏在百萬行代碼中,想快速定位、修復(fù)絕非易事。
    的頭像 發(fā)表于 02-06 16:59 ?3241次閱讀
    Linux內(nèi)核<b class='flag-5'>bug</b>狩獵指南:從棧跟蹤到修復(fù),官方文檔教你搞定系統(tǒng)核心故障

    Camera應(yīng)用旋轉(zhuǎn)預(yù)覽拉伸Bug:RK3588+Android 12環(huán)境下的復(fù)現(xiàn)、分析與臨時(shí)解決方案

    在移動設(shè)備 Camera 應(yīng)用開發(fā)中,預(yù)覽畫面穩(wěn)定性直接影響用戶拍攝體驗(yàn)。近期我們在RK3588 芯片平臺 + Android 12 系統(tǒng)環(huán)境下調(diào)試時(shí),發(fā)現(xiàn) Camera2 應(yīng)用存在高概率預(yù)覽拉伸
    的頭像 發(fā)表于 02-04 16:17 ?360次閱讀
    Camera應(yīng)用旋轉(zhuǎn)預(yù)覽拉伸<b class='flag-5'>Bug</b>:RK3588+Android 12環(huán)境下的復(fù)現(xiàn)、分析與臨時(shí)解決方案

    嵌入式軟件測試找bug的常見方法和秘訣

    “我怎么才能使程序跑得更快”、“什么編譯器最好”等問題。 面對這個(gè)不同尋常卻異乎成熟的問題,可能很多人都不知道怎么辦,下面就來講講軟件測試找bug常見方法和秘訣。 1懂得使用工具 通常嵌入式系統(tǒng)
    發(fā)表于 01-12 07:07

    芯片封裝方式終極指南(

    這是一份涉及芯片封裝幾乎所有關(guān)鍵概念的終極指南,它可以幫助您全面了解芯片的封裝方式以及未來互連技術(shù)的發(fā)展趨勢。
    的頭像 發(fā)表于 11-27 09:31 ?4001次閱讀
    <b class='flag-5'>芯片</b>封裝方式終極指南(<b class='flag-5'>上</b>)

    芯片制造的毫微之戰(zhàn):去膠工藝定成敗# 芯片#

    芯片
    華林科納半導(dǎo)體設(shè)備制造
    發(fā)布于 :2025年09月17日 16:26:50

    聊聊東芝TB67S109AFTG芯片在釣魚設(shè)備的應(yīng)用體驗(yàn)

    極步進(jìn)電機(jī)驅(qū)動芯片,采用BiCD工藝,支持50V/4A的驅(qū)動能力。最大的特點(diǎn)是支持最高1/32步的細(xì)分控制,內(nèi)置PWM斬波恒流驅(qū)動,還有多種保護(hù)功能。 在釣魚設(shè)備的實(shí)際表現(xiàn) 靜音運(yùn)行效果明顯 在實(shí)際測試中,這款芯片的靜音表現(xiàn)令
    的頭像 發(fā)表于 09-15 15:17 ?776次閱讀

    飛騰主板芯片組X100能起到什么作用?

    飛騰主板芯片組X100作為飛騰處理器的重要配套芯片,在計(jì)算機(jī)系統(tǒng)中承擔(dān)著多元且關(guān)鍵的作用,主要體現(xiàn)在圖形圖像處理與接口擴(kuò)展兩大核心功能領(lǐng)域。
    的頭像 發(fā)表于 07-28 09:25 ?772次閱讀

    STM32CubeMX初始配置沖突的BUG怎么處理?

    發(fā)現(xiàn)了一個(gè)BUG,比如我們在使用開發(fā)板進(jìn)行板載按鍵中斷配置的時(shí)候,如果開啟板子資源初始化配置,我們再自行配置一下后,產(chǎn)生了一個(gè)不識別的外部中斷處理函數(shù)
    發(fā)表于 07-22 08:02

    請問STM32新出的芯片USB還需要拉電阻嗎?

    我記得F103的USB需要拉個(gè)電阻,STM32新出的芯片USB還需要拉電阻嗎?例如H5系列
    發(fā)表于 07-18 06:40

    針對晶圓芯片工藝的光刻膠剝離方法及白光干涉儀在光刻圖形的測量

    引言 在晶圓芯片制造工藝中,光刻膠剝離是承上啟下的關(guān)鍵環(huán)節(jié),其效果直接影響芯片性能與良率。同時(shí),光刻圖形的精確測量是保障工藝精度的重要手段。本文將介紹適用于晶圓芯片工藝的光刻膠剝離方
    的頭像 發(fā)表于 06-25 10:19 ?1213次閱讀
    針對晶圓<b class='flag-5'>上</b><b class='flag-5'>芯片</b>工藝的光刻膠剝離方法及白光干涉儀在光刻圖形的測量

    芯知識|語音芯片發(fā)碼無聲解析:電無聲、連發(fā)指令才響的三大根源及解決之道

    在嵌入式語音方案開發(fā)中,廣州唯創(chuàng)電子語音芯片(如WT系列)以其高性價(jià)比和易用性廣受青睞。但當(dāng)開發(fā)者遭遇“電發(fā)碼無聲”或“必須連發(fā)兩次指令才有聲音”的問題時(shí),往往陷入調(diào)試?yán)Ь?。本文將深入剖析這些現(xiàn)象
    的頭像 發(fā)表于 06-19 09:14 ?1157次閱讀
    芯知識|語音<b class='flag-5'>芯片</b>發(fā)碼無聲解析:<b class='flag-5'>上</b>電無聲、連發(fā)指令才響的三大根源及解決之道

    芯知識|WT2003H 語音芯片模擬U盤功能詳解:電初始化時(shí)間解析

    擺脫了傳統(tǒng)語音芯片依賴專用燒錄器和復(fù)雜協(xié)議的束縛,大幅提升了開發(fā)和生產(chǎn)效率。然而,與這一強(qiáng)大便利性相伴的是一個(gè)重要的技術(shù)細(xì)節(jié):電初始化時(shí)間。關(guān)鍵特性:較長的電初
    的頭像 發(fā)表于 06-12 08:52 ?869次閱讀
    芯知識|WT2003H 語音<b class='flag-5'>芯片</b>模擬U盤功能詳解:<b class='flag-5'>上</b>電初始化時(shí)間解析

    如何在Android設(shè)備安裝Cyusb3014芯片驅(qū)動?

    1.如何在Android設(shè)備安裝Cyusb3014芯片驅(qū)動? 我們在 Windows 上有 FX3 驅(qū)動程序 SDK。 2.如何在Android系統(tǒng)上下載固件到芯片中?
    發(fā)表于 05-15 07:23