精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

CW32數(shù)字電壓電流表軟件教程(六):串口藍牙發(fā)送

武漢芯源半導體 ? 來源:CW32生態(tài)社區(qū) ? 2024-05-21 10:36 ? 次閱讀

7.1.串口基礎知識

7.1.1.串口介紹

串行接口簡稱串口,也稱串行通信接口或串行通信接口(通常指COM接口),是采用串行通信方式的擴展接口。串行接口 (Serial Interface)是指數(shù)據(jù)一位一位地順序傳送。其特點是通信線路簡單,只要一對傳輸線就可以實現(xiàn)雙向通信(可以直接利用電話線作為傳輸線),從而大大降低了成本,特別適用于遠距離通信,但傳送速度較慢。

7.1.2.串口通信參數(shù)介紹

波特率:衡量通信速度的參數(shù),它表示每秒鐘傳送的bit的個數(shù)。

數(shù)據(jù)位:衡量通信中實際數(shù)據(jù)位的參數(shù),表示一個信息包里包含的數(shù)據(jù)位的個數(shù)。

停止位:用于表示單個信息包的最后位,典型值為1、1.5和2位。由于數(shù)據(jù)是在傳輸線上傳輸?shù)模總€設備都有自己的時鐘,很有可能在通信過程中出現(xiàn)不同步,停止位不僅僅表示傳輸?shù)慕Y束,還能提供校正時鐘同步的機會。停止位的位數(shù)越多,不同時鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率也越慢。

奇偶檢驗位:表示一種簡單的檢查錯誤的方式。

關于更為詳細的介紹請搜索百度。

7.1.3.串口工作模式

串口可以工作在單工、半雙工和全雙工模式下。

單工:在通信的任意時刻,信息只能由A傳到B。

半雙工:在通信的任意時刻,信息即可由A傳到B,又能由B傳到A,但同時只能有一個方向上的傳輸存在。

全雙工:在通信的任意時刻,通信線路上存在A到B和B到A的雙向信號傳輸。

7.1.4.串口通信協(xié)議

串口在進行通信的時候會按照數(shù)據(jù)包的形式進行發(fā)送,幀格式如圖1-4-1所示。

e3a991f0-1710-11ef-b74b-92fbcf53809c.png

圖9-1 串口通信協(xié)議

串口通信是一位一位地傳輸,每傳輸一個字節(jié)總是以起始位開始,以停止位結束,字符之間沒有固定的時間間隔要求。每一個字符的前面都有一位起始位(低電平),后面由8位數(shù)據(jù)位組成,如果開啟了校驗位,則最后一位數(shù)據(jù)位是校驗位,最后是停止位。停止位后面是不定長的空閑位,停止位和空閑位都規(guī)定為高電平。

7.2.串口藍牙接線原理圖

在數(shù)字電壓電流表上默認使用的串口是串口2,接口為CW_UART2_TX和CW_UART2_RX。關于串口和藍牙連接原理圖如圖9-2所示。

e3d0155a-1710-11ef-b74b-92fbcf53809c.png

圖 9-2 串口藍牙接線

使用藍牙模塊KT6368將信息發(fā)送出去,只需要調用CW32的UART_2將信息傳輸至藍牙模塊即可。

7.3.串口驅動流程

串口驅動有以下幾個流程:配置CW32時鐘樹,配置UART_2串口,調用串口打印信息。通過查看上文的CW32時鐘樹可知,串口2掛載在高級外設時鐘 PCLK上,而此前的時鐘配置已將PCLK配置成了6MHz。具體的配置函數(shù)如下:

void Uart2_Init(void)
{        
    //外設時鐘使能
    RCC_AHBPeriphClk_Enable(RCC_AHB_PERIPH_GPIOA, ENABLE);      //使能串口要用到的GPIO時鐘
    RCC_APBPeriphClk_Enable1(RCC_APB1_PERIPH_UART2, ENABLE);    //使能串口時鐘
    
    GPIO_InitTypeDef GPIO_InitStructure;                        //GPIO初始化
    GPIO_InitStructure.IT = GPIO_IT_NONE;
    GPIO_InitStructure.Pins =  GPIO_PIN_7;
    GPIO_InitStructure.Mode = GPIO_MODE_INPUT_PULLUP;
    GPIO_InitStructure.Speed = GPIO_SPEED_HIGH;
    GPIO_Init(CW_GPIOA, &GPIO_InitStructure);
    PA07_AFx_UART2RXD();
        
    GPIO_InitStructure.IT = GPIO_IT_NONE;
    GPIO_InitStructure.Pins = GPIO_PIN_6;
    GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStructure.Speed = GPIO_SPEED_HIGH;
    GPIO_Init(CW_GPIOA, &GPIO_InitStructure);
    PA06_AFx_UART2TXD();
  
    USART_InitTypeDef USART_InitStructure;                       //串口初始化
    USART_InitStructure.USART_BaudRate = 115200;                 //設置波特率
    USART_InitStructure.USART_Over = USART_Over_16;              //串口采樣方式
    USART_InitStructure.USART_Source = USART_Source_PCLK;        //串口傳輸時鐘源采用PCLK
    USART_InitStructure.USART_UclkFreq = RCC_Sysctrl_GetPClkFreq();  //頻率為PCLK的頻率
    USART_InitStructure.USART_StartBit = USART_StartBit_FE;      //數(shù)據(jù)開始位
    USART_InitStructure.USART_StopBits = USART_StopBits_1;       //數(shù)據(jù)停止位
    USART_InitStructure.USART_Parity = USART_Parity_No ;         //無校驗
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//無硬件流控
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;  //發(fā)送/接收使能
    USART_Init(CW_UART2, &USART_InitStructure);
}

在完成串口的配置后,還需要寫一個串口發(fā)送函數(shù)

void USART_SendString(UART_TypeDef *USARTx, char *String)
{
    while (*String != '?')     //?表示沒有數(shù)據(jù)
    {
        USART_SendData_8bit(USARTx, *String);   //發(fā)送一位8bit數(shù)據(jù)
        while (USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET);  //發(fā)送緩沖器未空則等待
        String++;              //發(fā)送一次完成后,準備發(fā)送下一位數(shù)據(jù)
    }
    while (USART_GetFlagStatus(USARTx, USART_FLAG_TXBUSY) == SET);     //發(fā)送串口狀態(tài)忙則等待  
}

由于定時器中斷為1ms,而串口發(fā)送占用的時間較長,所以我們1000ms使用藍牙發(fā)送一次信息,這里的寫法并未使用定時器。

char data_reg[24];    //定義數(shù)組,用于數(shù)據(jù)打印
uint32_t Ble_Time=0;  //1000ms計時變量
while(1)              //main函數(shù)里的while循環(huán)
    {
      if(GetTick() >= (Ble_Time + 1000))     //如果此時的時間大于上一次的1000ms
        {
          Ble_Time = GetTick();              //記錄此刻時間
          Volt_Cal();                        //電壓計算
          sprintf(data_reg,"volt=%u
",Cal_Buffer);  //打印數(shù)據(jù)
          USART_SendString(CW_UART2,data_reg);         //調用串口上傳數(shù)據(jù)給藍牙
        }
    }

注意 GetTick() 函數(shù)定義在頭文件 cw32f003_systick.h 中,而此函數(shù)要使用到系統(tǒng)時鐘中斷,所以還需要配置系統(tǒng)時鐘中斷:

InitTick(48000000);                // SYSTICK 的工作頻率為48MHz,每ms中斷一次

最終可以收到藍牙傳遞的數(shù)據(jù):

e3f5dede-1710-11ef-b74b-92fbcf53809c.png

圖9-3 藍牙發(fā)送數(shù)據(jù)



審核編輯:劉清

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

原文標題:CW32數(shù)字電壓電流表軟件教程-實驗六:串口藍牙發(fā)送

文章出處:【微信號:武漢芯源半導體,微信公眾號:武漢芯源半導體】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    CW32數(shù)字電壓電流表-產(chǎn)品硬件設計要點

    電壓跟隨器的功能簡化外圍電路 2、使用了和市面電壓電流表的同款接口(XH2.54+CH3.96),方便通用 3、最大40V的表頭供電電壓,覆蓋大部分常用電壓范圍 4、板載低成本
    的頭像 發(fā)表于 04-25 15:20 ?1844次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b>-產(chǎn)品硬件設計要點

    CW32數(shù)字電壓電流表軟件教程(一):LED原理與驅動基礎知識詳解

    LED 驅動指的是通過穩(wěn)定的電源為 LED 提供合適的電流電壓,使其正常工作點亮。LED 驅動方式主要有恒流和恒壓兩種。
    的頭像 發(fā)表于 05-06 15:33 ?1697次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>(一):LED原理與驅動基礎知識詳解

    CW32數(shù)字電壓電流表軟件教程(三):數(shù)碼管顯示數(shù)字

    數(shù)碼管的顯示原理是由多個發(fā)光的二極管共陰極或者共陽極組成的成“8”字形的顯示器件。數(shù)碼管通過不同的組合可用來顯示數(shù)字0~9、字符A ~ F及小數(shù)點“.”。
    的頭像 發(fā)表于 05-14 14:20 ?2.2w次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>(三):數(shù)碼管顯示<b class='flag-5'>數(shù)字</b>

    用JLCPCB制造數(shù)字電壓表/電流表

    用JLCPCB制造數(shù)字電壓表/電流表教程。
    發(fā)表于 04-11 14:45 ?0次下載

    智能電壓電流表的工作原理及功能

    電壓電流表,主要用于測量直流電壓電流信號、傳感器輸出的電壓電流信號等等。近年來,隨著智能電子技術的發(fā)展,
    的頭像 發(fā)表于 05-06 09:38 ?3246次閱讀

    基于STM32的USB電壓電流表

    電子發(fā)燒友網(wǎng)站提供《基于STM32的USB電壓電流表.zip》資料免費下載
    發(fā)表于 08-10 14:47 ?40次下載
    基于STM32的USB<b class='flag-5'>電壓電流表</b>

    精密DIY電壓電流表

    電子發(fā)燒友網(wǎng)站提供《精密DIY電壓電流表.zip》資料免費下載
    發(fā)表于 10-27 14:19 ?21次下載
    精密DIY<b class='flag-5'>電壓電流表</b>

    CW32數(shù)字電壓電流表軟件教程-實驗四:數(shù)碼管動態(tài)顯示

    5.1.數(shù)碼管動態(tài)顯示原理 所謂動態(tài)掃描顯示即輪流向各位數(shù)碼管送出段碼和位碼,利用發(fā)光管的余輝和人眼視覺暫留作用,使人眼的感覺好像各位數(shù)碼管同時都在顯示。明確了原理,我們要使電壓電流表的三個位同時
    的頭像 發(fā)表于 05-31 15:23 ?463次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>-實驗四:數(shù)碼管動態(tài)顯示

    CW32數(shù)字電壓電流表軟件教程-實驗五:ADC采樣及顯示

    數(shù)字信號。由于數(shù)字信號本身不具有實際意義,僅僅表示一個相對大小。故任何一個模數(shù)轉換器都需要一個參考模擬量作為轉換的標準,比較常見的參考標準為最大的可轉換信號大小。而輸出的數(shù)字量則表示輸入信號相對于參考信號的大小。 6.1.2.
    的頭像 發(fā)表于 05-31 15:28 ?507次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>-實驗五:ADC采樣及顯示

    CW32數(shù)字電壓電流表軟件教程-實驗串口藍牙發(fā)送

    7.1.串口基礎知識 7.1.1.串口介紹 串行接口簡稱串口,也稱串行通信接口或串行通信接口(通常指COM接口),是采用串行通信方式的擴展接口。串行接口 (Serial Interface)是指數(shù)
    的頭像 發(fā)表于 05-31 15:45 ?299次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件教程</b>-實驗<b class='flag-5'>六</b>:<b class='flag-5'>串口</b><b class='flag-5'>藍牙</b><b class='flag-5'>發(fā)送</b>

    CW32數(shù)字電壓電流表軟件教程-實驗七:基本數(shù)據(jù)處理算法(均值濾波)

    有像素的均值,再把該均值賦予當前像素點(x,y),作為處理后圖像在該點上的灰度g(x,y),即g(x,y)=∑f(x,y)/m,m為該模板中包含當前像素在內(nèi)的像素總個數(shù)。這本是數(shù)字圖像處理的一種方法,但也可以用在我們數(shù)字電壓電流表
    的頭像 發(fā)表于 05-31 15:47 ?341次閱讀

    CW32數(shù)字電壓電流表軟件進階教程-1.電壓電流同時顯示

    基于[CW32數(shù)字電壓電流表軟件教程-實驗七:基本數(shù)據(jù)處理算法(均值濾波)],可以對電壓電流進行同時采集顯示。
    的頭像 發(fā)表于 05-31 15:50 ?634次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件</b>進階教程-1.<b class='flag-5'>電壓電流</b>同時顯示

    CW32數(shù)字電壓電流表軟件進階教程-2.電壓電流值做均值濾波

    在實驗運行7.1章節(jié)例程時 [CW32數(shù)字電壓電流表軟件進階教程-1.電壓電流同時顯示] ,會發(fā)現(xiàn)實時顯示更新的數(shù)據(jù)是當前采集值,并未做數(shù)據(jù)
    的頭像 發(fā)表于 05-31 15:57 ?450次閱讀

    CW32數(shù)字電壓電流表軟件進階教程-3.電壓電流標定

    標定是通過測量標準器的偏差來補償儀器系統(tǒng)誤差,從而改善儀器或系統(tǒng)準確度、精度的操作。為了提高電壓電流表在測量時的測量精度和準確度,需要對電壓電流進行標定校準。 常見的標定原理如下:假設一個采樣系統(tǒng)
    的頭像 發(fā)表于 05-31 16:20 ?650次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b><b class='flag-5'>軟件</b>進階教程-3.<b class='flag-5'>電壓電流</b>標定

    基于CW32F003E4P7的數(shù)字電壓電流表產(chǎn)品方案

    產(chǎn)品實物: 一、產(chǎn)品概述 數(shù)字電壓電流表,又稱為數(shù)顯電流電壓表,是以數(shù)字形式顯示,能夠同時檢測電流電壓
    的頭像 發(fā)表于 06-25 11:55 ?858次閱讀
    基于<b class='flag-5'>CW</b>32F003E4P7的<b class='flag-5'>數(shù)字</b><b class='flag-5'>電壓電流表</b>產(chǎn)品方案