女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

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

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

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

使用外部中斷和CPU定時器將GPIO模擬成SCI接口的方法和例程

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2022-01-13 14:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者: TI 北方區(qū)工程師 Young Hu 和 Jingyuan Zhao

引言:

C2000 Piccolo系列MCU芯片內(nèi)部一般都集成了1-2個硬件SCI (UART) 。有時出于成本或者Layout面積的考慮,只能選擇小封裝或資源較少的型號,那么就會出現(xiàn)硬件SCI不夠用的情況。這時便可使用GPIO軟件模擬成SCI接口

本文給出了使用外部中斷和CPU定時器將GPIO模擬成SCI接口的方法和例程。

一、測試相關(guān)環(huán)境

測試相關(guān)的軟硬件環(huán)境如下表所示:

CCS Version6.2.0.00050

Compiler VersionTI v15.12.3.LTS

ControlSUITEV3.4.9

測試芯片型號TMS320F28069M

硬件環(huán)境LAUNCHXL-F28069M

GPIO引腳使用TX: GPIO33 RX: GPIO0

硬件資源使用CPU_Timer0, XINT3

您可以選擇任意示例工程,這里選擇的工程為timed_led_blink,它的工程文件的目錄為:

C:\ti\controlSUITE\device_support\f2806x\v151\F2806x_examples_ccsv5\timed_led_blink

在CCS中import該工程后,將Example_2806xLEDBlink.c替換為本文提供的源碼即可。

二、 功能描述

SCI (Serial Communications Interface, 串行通信接口) 是一種雙線異步串行接口,通常也被稱為UART。SCI提供了與一些常用外設(shè)的通信接口。SCI的數(shù)據(jù)幀格式,如圖1所示,通常由以下部分組成:

1 bit 起始位:一位邏輯0,表示傳輸開始。

1-8 bit 數(shù)據(jù)位:小端傳輸,先傳輸?shù)臀辉賯鬏敻呶弧?/p>

1 bit奇偶校驗位(可選):加上這一位后使數(shù)據(jù)位1的個數(shù)為奇數(shù)或者偶數(shù)。

1或2 bit停止位:一位或兩位邏輯1,表示傳輸結(jié)束。

圖1 SCI數(shù)據(jù)幀格式

1. 發(fā)送程序框圖和發(fā)送狀態(tài)機

發(fā)送使能后,CPU定時器打開,每隔8.67us(115200 bps)產(chǎn)生一次中斷,在定時器中斷發(fā)生時改變引腳的輸出電平實現(xiàn)數(shù)據(jù)發(fā)送。第一個定時器中斷時,發(fā)送引腳電平置低,標志數(shù)據(jù)發(fā)送開始。之后以小端模式從低位到高位依次發(fā)送數(shù)據(jù)位、校驗位。采用奇校驗時,數(shù)據(jù)按位異或的結(jié)果和校驗位的異或結(jié)果應(yīng)為1;采用偶校驗時,數(shù)據(jù)按位異或的結(jié)果和校驗位的異或結(jié)果應(yīng)為0。傳輸結(jié)束后,發(fā)送引腳輸出一位高電平,標志發(fā)送結(jié)束。

2. 接收程序框圖和接收狀態(tài)機

接收使能后,開啟外部中斷。SCI接收引腳在空閑狀態(tài)下處于高電平,接收數(shù)據(jù)的起始位為低電平。由于數(shù)據(jù)到來時間的不確定,故采用外部中斷下降沿觸發(fā)的方式檢測數(shù)據(jù)傳輸?shù)钠鹗嘉弧M獠恐袛鄼z測到下降沿后,標志數(shù)據(jù)傳輸開始。此時先延時4us,等待信號電平穩(wěn)定,然后關(guān)閉外部中斷,打開定時器。與發(fā)送相同,定時器每8.67us產(chǎn)生一次中斷。每次中斷產(chǎn)生時,對接收引腳的電平進行采樣,依次接收數(shù)據(jù)位、校驗位和停止位。當(dāng)所有數(shù)據(jù)接收完成后,關(guān)閉定時器,等待接收下次使能。

3. 功能描述

波特率: 115200 bps (可調(diào)), 停止位:1 bit,數(shù)據(jù)位:1-8 bit,校驗位:無校驗、奇校驗或偶校驗。可根據(jù)實際需求在宏定義中修改recvBuffLen確定接收緩沖區(qū)大小:

#define recvBuffLen 800

以接收緩沖區(qū)大小為800 Bytes為例,每當(dāng)程序從GPIO0接收滿800 Bytes數(shù)據(jù)后,就會把全部接收到的數(shù)據(jù)通過GPIO32發(fā)出。

三、API

1. 宏定義

#define parity 1 // 0: no parity, 1: odd, 2: even

#define dataLength 8 // data bit length 1 - 8

#define recvBuffLen 25 // receive buffer size

parity:校驗位。可設(shè)置為0:無校驗,1:奇校驗,2:偶校驗。

dataLength:數(shù)據(jù)位長度,可配置為1-8比特。

recvBuffLen:接收緩沖區(qū)大小,通常可設(shè)置為數(shù)據(jù)包長度。

2. 全局變量

// software sci mode

// 0: rx 1: tx

Uint16 swSciMode = 0;

// rx data & state

Uint16 rxData = 0;

Uint16 rxState = 0;

Uint16 rxError = 0;

// tx data & state

Uint16 txData = 0;

Uint16 txState = 0;

swSciMode:定義軟件串口模式。為節(jié)省硬件資源,采用半雙工模式。0為接收模式,1為發(fā)送模式。

rxData:從GPIO接收到的單字節(jié)數(shù)據(jù)。

rxState:接收程序狀態(tài)機狀態(tài),0-3為有效狀態(tài),詳見圖3。

rxError:接收錯誤指示標志,在調(diào)用接收相關(guān)API后值會相應(yīng)改變,需手動清零。具體定義如下:

0x000x010x020x03

接收正常校驗錯誤未檢測到停止位停止位+校驗位錯誤

txData:從GPIO發(fā)送到的單字節(jié)數(shù)據(jù)。

txState:發(fā)送程序狀態(tài)機狀態(tài),0-5為有效狀態(tài),詳見圖2。

3. 函數(shù)

// Software SCI related functions

Uint16 sw_sci_recv_byte(void);

void sw_sci_recv_bytes(Uint16* dataBuff, Uint16 len);

void sw_sci_send_byte(Uint16 data);

void sw_sci_send_bytes(Uint16* dataBuff, Uint16 len);

void sw_sci_send_string(char* txString);

函數(shù)名稱功能描述

Uint16 sw_sci_recv_byte(void)返回GPIO0接收到的單字節(jié)數(shù)據(jù)。

void sw_sci_recv_bytes(Uint16*dataBuff, Uint16 len)從GPIO0接收len個字節(jié)數(shù)據(jù)存入緩沖區(qū)dataBuff中。

void sw_sci_send_byte(Uint16 data);使用GPIO33發(fā)送單字節(jié)數(shù)據(jù)。

void sw_sci_send_bytes(Uint16* dataBuff, Uint16 len)使用GPIO33發(fā)送dataBuff中l(wèi)en個連續(xù)字節(jié)數(shù)據(jù)。

void sw_sci_send_string(char* txString);使用GPIO33發(fā)送字符串txString。txString必須以\0結(jié)尾,方便用戶調(diào)試使用。

四、測試

1. 波特率及CPU負載測試

為測試軟件SCI的性能,本例程額外使用了GPIO32作為測試引腳用于指示程序狀態(tài)。當(dāng)程序進入軟件SCI定時器中斷時,GPIO32輸出高電平;其余時間GPIO32輸出低電平。圖4為8位數(shù)據(jù)位、1位奇校驗、1位停止位、115200波特率下,發(fā)送0x55時TX引腳(藍線)和測試引腳(黃線)的波形。從圖中可以看出,實際發(fā)送波特率為116280bps,誤差0.9%。測試引腳的高電平持續(xù)時間和,即為軟件SCI發(fā)送單字節(jié)數(shù)據(jù)占用CPU的時間。經(jīng)過測量,測試引腳高電平共持續(xù)10.32us,單字節(jié)理論發(fā)送時間為95.49us,故發(fā)送時CPU負載為10.8%。

圖4軟件串口例程發(fā)送測試

圖5為8位數(shù)據(jù)位、1位奇校驗、1位停止位、115200波特率下,接收0x55時RX引腳(藍線)和測試引腳(黃線)的波形。經(jīng)過測量,測試引腳高電平共持續(xù)7.2us,單字節(jié)理論接收時間為95.49us,故接收時CPU負載為7.5%。

圖5軟件串口例程接收測試

在沒有示波器的情況下也可使用C2000 MCU內(nèi)部的eCAP測量實際發(fā)送波特率和CPU負載。

2. 數(shù)據(jù)收發(fā)測試

軟件串口例程配置為115200波特率、8bit數(shù)據(jù)位、1停止位、奇校驗,PC端串口助手采用相同配置時,數(shù)據(jù)可以正常收發(fā):

將串口助手軟件改為偶校驗,例程提示校驗位錯誤:

軟件串口例程配置為無校驗位,串口助手采用奇校驗時,例程實際在接收結(jié)束位時接收到的是校驗位,此時例程提示結(jié)束位錯誤:

例程和串口助手采用相同配置時,以5Hz頻率發(fā)送800 Bytes數(shù)據(jù)包,收發(fā)正常:

五、注意事項

1. 改變通信波特率可通過調(diào)整CPU定時器的分頻系數(shù)實現(xiàn)。

理論分頻系數(shù) =

以LAUNCHXL-F28069M 為例,LAUNCHXL-F28069M主頻為90 MHz。理論分頻系數(shù)應(yīng)為:

實際使用時由于系統(tǒng)時鐘會有誤差,推薦使用示波器測量實際輸出波特率對分頻系數(shù)進行調(diào)整。

2. TX引腳可根據(jù)需求更改至任意引腳。RX引腳需要通過外部中斷下降沿判斷數(shù)據(jù)起始位,所以只能在GPIO0-GPIO31中進行選擇。

3. 為節(jié)省硬件資源,接收和發(fā)送程序使用同一CPU定時器,所以僅能進行半雙工通信。若想實現(xiàn)全雙工通信可再多使用一個定時器將發(fā)送和接收分開。

六、待辦事項

1. 增加使用eCAP測量波特率和CPU負載功能。

2. 增加波特率自動校正功能。

審核編輯:何安

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

    關(guān)注

    0

    文章

    341

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    第十二章 SysTick——系統(tǒng)定時器

    本章介紹了W55MH32的SysTick系統(tǒng)定時器,它是24位遞減計數(shù),含4個寄存,可配置定時中斷,用于產(chǎn)生時基 等。
    的頭像 發(fā)表于 05-22 17:16 ?402次閱讀
    第十二章 SysTick——系統(tǒng)<b class='flag-5'>定時器</b>

    MCU定時器/計數(shù)

    RISC-V核低功耗MCU通過靈活的定時器架構(gòu)、低功耗模式適配及硬件級中斷優(yōu)化,在工業(yè)控制、智能家居等場景中實現(xiàn)高精度計時與能耗控制的協(xié)同設(shè)計,滿足復(fù)雜任務(wù)調(diào)度與實時響應(yīng)的雙重需求?。 一、?硬件
    的頭像 發(fā)表于 04-27 13:54 ?242次閱讀

    基于小凌派RK2206開發(fā)板:OpenHarmony如何使用IoT接口控制GPIO中斷

    1、實驗簡介本實驗演示如何在小凌派-RK2206開發(fā)板上使用IOT庫的GPIO中斷模式,進行GPIO編程開發(fā)。例程
    的頭像 發(fā)表于 04-21 10:39 ?412次閱讀
    基于小凌派RK2206開發(fā)板:OpenHarmony如何使用IoT<b class='flag-5'>接口</b>控制<b class='flag-5'>GPIO</b><b class='flag-5'>中斷</b>

    STM32G474HRTIM使用HRTIM配置了主定時器中斷,為啥調(diào)試的跳轉(zhuǎn)到硬件中斷,進不去定時器中斷,為什么?

    各位大佬,我使用HRTIM配置了主定時器中斷,為啥調(diào)試的跳轉(zhuǎn)到硬件中斷,進不去定時器中斷 下面是我的初始化代碼
    發(fā)表于 03-13 08:17

    GPIO使用教程 GPIO接口應(yīng)用

    數(shù)字信號,通常用于微型計算機、單片機和微控制等硬件平臺的外部接口GPIO被設(shè)計用來連接外部設(shè)備,如按鈕、
    的頭像 發(fā)表于 01-31 10:10 ?3208次閱讀

    GPIO模塊與其他外設(shè)的連接方法

    在嵌入式系統(tǒng)設(shè)計中,GPIO模塊是實現(xiàn)設(shè)備與外部世界交互的關(guān)鍵接口。它們提供了一種靈活的方式來控制和監(jiān)測外部設(shè)備。 GPIO模塊的基本概念
    的頭像 發(fā)表于 01-09 09:48 ?925次閱讀

    敏矽微ME32G070開發(fā)板開發(fā)資料(規(guī)格書、庫和例程

    32位 ARM CPU 內(nèi)核: 速度高達72Mhz 的ARM Cortex?-M0 處理;可嵌套中斷向量控制器(NVIC);32位硬件乘法器;24位系統(tǒng)嘀嗒定時器;DMA,支持外設(shè)
    發(fā)表于 12-11 14:18

    stm32 GPIO中斷配置教程

    在嵌入式開發(fā)中,STM32微控制因其高性能和豐富的外設(shè)而廣受歡迎。GPIO(通用輸入/輸出)中斷是STM32微控制中常用的功能之一,它允許開發(fā)者在特定引腳上檢測到
    的頭像 發(fā)表于 11-19 15:53 ?3345次閱讀

    高級定時器PWM輸入模式的配置方法

    我們向大家介紹高級定時器的另一個常見應(yīng)用——PWM輸入模式。在本節(jié)課中,我們先圍繞輸入捕獲模式展開,并重點描述PWM輸入模式和涉及的寄存,最后通過一個實驗
    的頭像 發(fā)表于 11-08 16:48 ?4257次閱讀
    高級<b class='flag-5'>定時器</b>PWM輸入模式的配置<b class='flag-5'>方法</b>

    gpio接口是干什么的 gpio四種輸入輸出模式怎么選擇

    這些引腳的電平狀態(tài),實現(xiàn)與外部設(shè)備的通信和交互。GPIO接口在嵌入式系統(tǒng)、物聯(lián)網(wǎng)設(shè)備、樹莓派項目等領(lǐng)域有著廣泛的應(yīng)用,為電子設(shè)備的通信和交互提供了重要的支持。 具體來說,GPIO
    的頭像 發(fā)表于 10-06 16:07 ?7516次閱讀

    單片機的中斷有哪些?各類型中斷有什么作用?

    。這些中斷通常用于響應(yīng)外部設(shè)備或傳感的信號變化。 GPIO中斷:由GPIO引腳上的電平變化(如
    發(fā)表于 09-24 16:22

    定時器的基本組成和工作模式

    定時器是計算機或電子設(shè)備中常見的一個硬件或軟件組件,其主要功能是測量和控制時間的流逝。它在各種應(yīng)用中起著至關(guān)重要的作用,如操作系統(tǒng)調(diào)度、多媒體播放、網(wǎng)絡(luò)通信、工業(yè)自動化控制以及家電設(shè)備的定時功能等。定時器的工作原理基于時序控制,
    的頭像 發(fā)表于 08-19 18:28 ?2697次閱讀

    555定時器能改進哪些器件

    555定時器是一種廣泛使用的集成電路,它具有多種功能,如產(chǎn)生精確的時間延遲、振蕩、脈沖調(diào)制等。然而,隨著電子技術(shù)的發(fā)展,一些新型的器件和方法已經(jīng)出現(xiàn),可以改進555
    的頭像 發(fā)表于 07-17 09:16 ?829次閱讀

    定時器的工作方式介紹

    或?qū)崿F(xiàn)周期性事件的硬件模塊。它可以用于實現(xiàn)各種定時任務(wù),如定時中斷、PWM(脈沖寬度調(diào)制)輸出、頻率測量等。定時器通常由一個計數(shù)、一個時鐘源和一個控制寄存
    的頭像 發(fā)表于 07-12 10:29 ?1897次閱讀

    定時器相關(guān)的寄存有哪些類型

    在微控制編程中,定時器是一種非常常見的功能模塊,用于實現(xiàn)各種定時和計數(shù)功能。定時器的工作原理是通過內(nèi)部的計數(shù)來跟蹤時間的流逝,當(dāng)計數(shù)
    的頭像 發(fā)表于 07-12 10:25 ?1656次閱讀
    主站蜘蛛池模板: 砚山县| 营山县| 襄城县| 新平| 禹城市| 井陉县| 湘潭县| 莆田市| 乳山市| 天长市| 长寿区| 栾川县| 疏附县| 彩票| 晋宁县| 天峻县| 新蔡县| 苍南县| 广丰县| 渭源县| 县级市| 宁夏| 三亚市| 维西| 杨浦区| 贵南县| 铅山县| 井冈山市| 二连浩特市| 郸城县| 兴化市| 涡阳县| 青岛市| 大宁县| 宜阳县| 洞口县| 黄大仙区| 全椒县| 玛多县| 亳州市| 城口县|