一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

我們?cè)谑褂么诎l(fā)送數(shù)據(jù)時(shí),無(wú)非是使用兩種方法,一種是逐字節(jié)發(fā)送,另一種是DMA發(fā)送。

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

一般串口發(fā)送數(shù)據(jù)前,我們需要先查看TBE標(biāo)志位,判斷緩存區(qū)內(nèi)是不是已經(jīng)空了,如果空了我們才會(huì)往里填數(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)斷的話,就會(huì)丟失一個(gè)字節(jié)的數(shù)據(jù)。

因此,一般發(fā)送完成后,需要檢查TC標(biāo)志是不是已經(jīng)被拉高了,以此來(lái)判斷數(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è)套路來(lái)寫的,串口發(fā)送數(shù)據(jù)量比較大,在運(yùn)行一段時(shí)間后,程序突然就死機(jī)了,查看一下,是死在了最后一行等待TC標(biāo)志位這里。查看寄存器列表,TC始終為0。

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

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

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

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

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

針對(duì)這種情況,硬件上無(wú)法做出改善,只能從軟件上規(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í)間超過(guò)設(shè)定閾值,則不再等待TC置位,以此來(lái)避免程序阻塞假死。

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

審核編輯 :李倩


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

    關(guān)注

    459

    文章

    52505

    瀏覽量

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

    關(guān)注

    6067

    文章

    44991

    瀏覽量

    650397

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

    芯片流片失敗都有哪些原因

    版本拿錯(cuò),基本芯片就廢了。這種情況還真不少。2.流片的時(shí)候存在重大bug。如果說(shuō)一款芯片流片出去完全沒(méi)有bug是不可能的,大部分的bug都不
    的頭像 發(fā)表于 03-28 10:03 ?593次閱讀
    <b class='flag-5'>芯片</b>流片失敗都有哪些原因

    Gui Guiderv1.9.0使用下拉框控件問(wèn)題,出現(xiàn)bug不顯示list選項(xiàng)怎么解決?

    Gui Guiderv1.9.0使用下拉框控件問(wèn)題,出現(xiàn)bug不顯示list選項(xiàng)
    發(fā)表于 03-25 06:53

    AI在芯片的應(yīng)用:革新設(shè)計(jì)與功能

    AI在芯片的應(yīng)用正在深刻改變著芯片設(shè)計(jì)、制造和應(yīng)用的全過(guò)程。未來(lái),隨著AI技術(shù)的不斷進(jìn)步和應(yīng)用場(chǎng)景的不斷拓展,AI芯片將成為推動(dòng)科技發(fā)展的重要力量。
    的頭像 發(fā)表于 02-17 16:09 ?585次閱讀

    移動(dòng)端設(shè)備稀奇古怪的前端問(wèn)題收集(一)

    作為一名開發(fā)者,bug 往往是我們最怕遇見(jiàn)的東西;而比遇到 bug 更可怕的事情,是定位不到 bug。作為一名前端開發(fā)者,與業(yè)務(wù)邏輯相關(guān)的 bug 還相對(duì)好定位、好解決一些;而一些與語(yǔ)
    的頭像 發(fā)表于 01-24 15:41 ?380次閱讀

    使用SIGMA STUDIO PLUS對(duì)連接在ADAU1452 SPI的FLASH進(jìn)行編程時(shí),程序并不能成功的寫入flash怎么解決?

    我嘗使用SIGMA STUDIO PLUS 對(duì)連接在ADAU1452 SPI的FLASH進(jìn)行編程時(shí),發(fā)現(xiàn)程序并不能成功的寫入flash, 使用的FLASH芯片時(shí)M25P80,配置如下: 編程
    發(fā)表于 12-19 07:26

    KiCon 演講回顧(十五):提交 Kicad Bug

    “?Wayne Stambaugh 分享了如何提升 KiCad 用戶和開發(fā)者體驗(yàn)的關(guān)鍵一環(huán):報(bào)告KiCad Bug。?” 完整的演講視頻在這里: KiCad的使命 KiCad旨在為專業(yè)電子設(shè)計(jì)師提供
    的頭像 發(fā)表于 12-11 09:09 ?506次閱讀
    KiCon 演講回顧(十五):提交 Kicad  <b class='flag-5'>Bug</b>

    IC芯片磨字機(jī) 刻字機(jī) 卷對(duì)卷料# IC芯片# IC刻字機(jī)

    芯片
    東莞市維品科技有限公司
    發(fā)布于 :2024年10月24日 13:57:33

    eeprom芯片用在什么

    EEPROM(Electrically Erasable Programmable Read-Only Memory,電可擦除可編程只讀存儲(chǔ)器)是一種非易失性存儲(chǔ)器,可以在不移除芯片的情況下,通過(guò)
    的頭像 發(fā)表于 10-17 10:36 ?2445次閱讀

    TAS5630B芯片的12V和地短路了,芯片不在板子,為什么?怎么解除?

    TAS5630B芯片的12V和地短路了,芯片不在板子,無(wú)任何外圍電路, 請(qǐng)問(wèn)是芯片壞了嗎,還是進(jìn)入某種保護(hù),如果進(jìn)入某種保護(hù),可以解除嗎,是怎么解除
    發(fā)表于 10-16 06:07

    引腳封裝HotRod和FC-SOT倒裝芯片的降額和壽命計(jì)算

    電子發(fā)燒友網(wǎng)站提供《引腳封裝HotRod和FC-SOT倒裝芯片的降額和壽命計(jì)算.pdf》資料免費(fèi)下載
    發(fā)表于 09-26 11:30 ?2次下載
    引腳封裝HotRod和FC-SOT<b class='flag-5'>上</b>倒裝<b class='flag-5'>芯片</b>的降額和壽命計(jì)算

    一般ram芯片的引腳有哪些

    RAM(Random Access Memory,隨機(jī)存取存儲(chǔ)器)芯片的引腳通常包括多種類型,用于實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)、讀取、寫入以及與其他組件的通信。以下是一些常見(jiàn)的RAM芯片引腳類型及其功能: 電源
    的頭像 發(fā)表于 09-18 11:07 ?3129次閱讀

    stm32H7 HAL庫(kù)中存在的bug

    stm32H7 hal 庫(kù)里面的以太網(wǎng)代碼,坑了魚鷹很多次(不知道最新版是否已經(jīng)修復(fù)了這些bug),這里分享一篇網(wǎng)上的文章,因?yàn)轸~鷹也遇到過(guò),靠它解決了其中一個(gè)編譯優(yōu)化問(wèn)題,在此感謝作者。不過(guò)hal
    的頭像 發(fā)表于 08-12 17:37 ?2284次閱讀

    底部填充工藝在倒裝芯片的應(yīng)用

    底部填充工藝在倒裝芯片(FlipChip)的應(yīng)用是一種重要的封裝技術(shù),旨在提高封裝的可靠性和延長(zhǎng)電子產(chǎn)品的使用壽命。以下是該工藝的主要應(yīng)用和優(yōu)勢(shì):增強(qiáng)可靠性:倒裝芯片封裝中的焊點(diǎn)(常為金錫合金或鉛
    的頭像 發(fā)表于 07-19 11:16 ?1266次閱讀
    底部填充工藝在倒裝<b class='flag-5'>芯片</b><b class='flag-5'>上</b>的應(yīng)用