吴忠躺衫网络科技有限公司

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

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

3天內不再提示

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

jf_qE49KoVBr8 ? 來源:CW32生態社區 ? 2024-05-21 10:36 ? 次閱讀

7.1.串口基礎知識

7.1.1.串口介紹

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

7.1.2.串口通信參數介紹

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

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

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

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

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

7.1.3.串口工作模式

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

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

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

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

7.1.4.串口通信協議

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

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

圖9-1 串口通信協議

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

7.2.串口藍牙接線原理圖

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

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

圖 9-2 串口藍牙接線

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

7.3.串口驅動流程

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

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;      //數據開始位
    USART_InitStructure.USART_StopBits = USART_StopBits_1;       //數據停止位
    USART_InitStructure.USART_Parity = USART_Parity_No ;         //無校驗
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//無硬件流控
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;  //發送/接收使能
    USART_Init(CW_UART2, &USART_InitStructure);
}

在完成串口的配置后,還需要寫一個串口發送函數

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

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

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

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

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

最終可以收到藍牙傳遞的數據:

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

圖9-3 藍牙發送數據



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據傳輸
    +關注

    關注

    9

    文章

    1950

    瀏覽量

    64797
  • 串行通信接口

    關注

    0

    文章

    17

    瀏覽量

    9573
  • 定時器中斷
    +關注

    關注

    0

    文章

    49

    瀏覽量

    11244

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

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

收藏 人收藏

    評論

    相關推薦

    CW32數字電壓電流表-產品硬件設計要點

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

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

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

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

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

    用JLCPCB制造數字電壓表/電流表

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

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

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

    基于STM32的USB電壓電流表

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

    精密DIY電壓電流表

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

    CW32數字電壓電流表軟件教程-實驗四:數碼管動態顯示

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

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

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

    CW32數字電壓電流表軟件教程-實驗串口藍牙發送

    7.1.串口基礎知識 7.1.1.串口介紹 串行接口簡稱串口,也稱串行通信接口或串行通信接口(通常指COM接口),是采用串行通信方式的擴展接口。串行接口 (Serial Interface)是指數
    的頭像 發表于 05-31 15:45 ?366次閱讀
    <b class='flag-5'>CW32</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'>藍牙</b><b class='flag-5'>發送</b>

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

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

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

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

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

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

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

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

    基于CW32F003E4P7的數字電壓電流表產品方案

    產品實物: 一、產品概述 數字電壓電流表,又稱為數顯電流電壓表,是以數字形式顯示,能夠同時檢測電流電壓
    的頭像 發表于 06-25 11:55 ?1000次閱讀
    基于<b class='flag-5'>CW</b>32F003E4P7的<b class='flag-5'>數字</b><b class='flag-5'>電壓電流表</b>產品方案
    百家乐官网高手投注法| 雷山县| 百家乐真人游戏网| 百家乐官网赢钱lv| 庄闲和百家乐桌布| 百家乐是片人的吗| 百家乐官网的规则博彩正网| 大发888站| 网上百家乐新利| 百家乐娱乐分析软件v| 百家乐官网tt娱乐平台| 德州扑克的玩法| 百人百家乐软件供应| 百家乐官网平台下载| 大发888娱乐场下载最高| 百家乐官网事一箩筐的微博| 云鼎娱乐城信誉| 沙龙百家乐娱乐| 机械手百家乐官网的玩法技巧和规则 | 大富豪棋牌游戏中心| 真人百家乐娱乐场| 神人百家乐官网赌博| 铜梁县| 百家乐官网投注平台导航网 | 大世界百家乐官网娱乐平台| 保山市| 真人游戏大全| 百家乐高手看百家乐| 百家乐官网机械投注法| 平博国际| 大发888娱乐捕鱼游戏| 百家乐电脑游戏机投注法实例| 速博百家乐官网的玩法技巧和规则| 玩机器百家乐官网心得| 双色球大赢家| 机械手百家乐的玩法技巧和规则 | 大发888官方中文网址| 玩百家乐有几种公式| 百家乐官方网址| 百家乐官网游戏辅助| 百家乐官网破解的方法|