热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DSP_SCI

F2833xSerialCommunicationInterface簡介串行通信接口(SCI)模塊是一個串行IO端口,允許F2833x與其

 F2833x Serial Communication Interface

簡介

串行通信接口(SCI)模塊是一個串行I / O端口,允許F2833x與其他外圍設備之間的異步通信。 它通常被稱為UART(通用異步接收器發送器),通常根據RS232標準使用。

SCI接收器和發送器每個都有一個16深的FIFO,用於減少服務開銷,每個FIFO都有自己獨立的使能和中斷位。 兩者都可以獨立操作以進行半雙工通信,或同時進行全雙工通信。

為了保持數據完整性,SCI檢查接收到的數據是否存在中斷檢測,奇偶校驗,溢出和幀錯誤。 通過16位波特選擇寄存器,可以針對不同的通信速率對比特率進行編程。

SCI Data Format

基本數據單元稱為字符,長度為1位到8位。 每個數據字符都使用起始位,1或2個停止位,可選的奇偶校驗位和可選的地址/數據位進行格式化。 數據字符及其格式化位稱為幀。 幀被組織成稱為塊的組。 如果SCI總線上存在兩個以上的串行端口,則數據塊通常以地址幀開始,該地址幀指定由用戶協議確定的數據的目標端口。

起始位是每幀開始時的低位,標記幀的開始。 SCI使用NRZ(非歸零)格式,這意味著在非激活狀態下,SCIRX和SCITX線將保持高電平。 當外圍設備沒有在各自的線路上接收或發送時,它們會將SCIRX和SCITX線路拉到高水平。'

注意:如果您正在使用RS232接口,則串行線路上的所有電壓電平都由外部接口電路驅動,例如Texas Instruments MAX3221。 邏輯“0”作為+5和+ 15V之間的電壓傳輸,邏輯“1”作為-5和-15V之間的負電壓傳輸。 在接收器側,高於+ 3V的電壓將被識別為有效的“0”,低於-3V的電壓將被識別為邏輯“1”。

SCI Data Timing

SCI異步通信格式使用單線(單向)或雙線(雙向)通信。 在此模式下,幀由起始位,1到8個數據位,可選的偶數/奇數奇偶校驗位以及一個或兩個停止位組成(如幻燈片9-3所示)。 每個數據位有8個SCICLK週期。

接收器在接收到有效起始位時開始操作。 有效起始位由四個連續的零位內部SCICLK週期標識,如幻燈片9-4所示。 如果任何位不為零,則處理器重新開始並開始尋找另一個起始位。

對於起始位之後的位,處理器通過在位中間產生三個樣本來確定位值。 這些採樣發生在第四,第五和第六SCICLK週期,並且位值確定基於多數(三分之二)。 幻燈片9-4說明了這種異步通信格式,其中一個起始位顯示了多數表決的位置。 由於接收器使其自身與幀同步,因此外部發送和接收設備不必使用同步的串行時鐘。 時鐘可以在本地生成。

 

SCR Register Set

 

SCI Communications Control Register (SCICCR)

上一張幻燈片解釋了SCI數據幀結構的設置。

 如果未使用多處理器喚醒模式,則應清除第3位。這樣可以避免在數據幀末尾生成額外的地址/數據選擇位(見幻燈片9-3)。

某些主機或其他設備無法處理此額外位。

 

SCI Control Register 1(SCICTL1)

配置SCICCR寄存器時,SCI端口應首先保持無效狀態。

這是使用SCI控制寄存器1(SCICTL1.5)的SW RESET位完成的。向該位寫入0會初始化並保持SCI狀態機和操作標誌處於復位狀態。

然後可以配置SCICCR。然後,通過向SW RESET位寫1來重新使能SCI端口。在系統復位時,SW RESET位等於0。

 

SCI Baud Rate Register

SCI的波特率來自低速預縮放器(LSPCLK)。

假設SYSCLK頻率為150MHz,低速預分頻器初始化為“除以4”,我們可以計算BRR的值,讓我們說數據速率為9600波特:

BRR必須是整數,因此我們必須將結果舍入到487. BRR = 487的反向計算導致實際數據速率為9605位/秒(誤差= 0.05%)。

 

SCI Control Register 2 SCICTL2

位1和位0使能或禁止SCI發送和接收中斷。 如果不使用中斷,則可以通過清除第1位和第0位來禁用此功能。

在這種情況下,我們需要對發送器狀態標誌(SCICTL2.7和SCICTL2.6)應用輪詢方法。

SCITXEMPTY標誌等待整個數據幀離開SCI輸出,而標誌SCITXREADY表示我們可以在物理髮送前一個字符之前將下一個字符重新加載到SCITXBUF中。

接收器部分的狀態標誌可以在SCI接收器狀態寄存器中找到(參見下一張幻燈片)。

 

SCI Receiver Status Register SCIRXST

 

SCI中斷邏輯在接收或發送完整字符時產生中斷標誌,由SCI字符長度決定。 這提供了一種方便有效的定時和控制SCI發送器和接收器操作的方法。 發送器的中斷標誌是TXRDY(SCICTL2.7),接收器的中斷標誌是RXRDY(SCIRXST.6)。 當字符傳輸到TXSHF並且SCITXBUF準備接收下一個字符時,TXRDY置位。 此外,當SCIBUF和TXSHF寄存器都為空時,TX EMPTY標誌(SCICTL2.6)置位。

當接收到新字符並轉入SCIRXBUF時,RXRDY標誌置位。 此外,如果發生中斷條件,則設置BRKDT標誌。 中斷條件是SCIRXD線在丟失停止位後保持連續低電平至少10位。 控制SCI操作的CPU可以輪詢上述每個標誌,或者通過將RX / BK INT ENA(SCICTL2.1)和/或TX INT ENA(SCICTL2.0)位置1有效來啟用與標誌相關的中斷高。

其他接收器錯誤存在附加標誌和中斷功能。 RX ERROR標誌是中斷檢測(BRKDT),幀錯誤(FE),接收器溢出(OE)和奇偶校驗錯誤(PE)位的邏輯或。 RX ERROR high表示在傳輸過程中發生了這四個錯誤中的至少一個。 如果RX ERR INT ENA(SCICTL1.6)位置1,這也會向CPU發送中斷請求。

 

SCI FIFO Mode Register

在增強功能集中,SCI模塊支持硬件中的自動波特率檢測邏輯。 以下部分介紹了自動波特率檢測功能的啟用順序。 自動波特率是一項功能,可用於將F2833x的數據速率調整為主機設備的傳輸速度。 如果主機發送字符'A'或'a',則自動波特率單元將鎖定此字符並相應地設置內部波特率寄存器。\

要使用此功能,需要遵循以下順序:

  1. 通過將SCIFFCT中的CDC位(位13)置1並通過向ABDCLR位(位14)寫1來清除ABD位(位15),為SCI啟用自動波特率檢測模式。
  2. 將波特率寄存器初始化為1或小於500 Kbps的波特率限制。
  3. 允許SCI以所需的波特率從主機接收字符“A”或“a”。如果第一個字符是“A”或“a”,則自動波特率檢測硬件將檢測輸入波特率並設置ABD位。
  4. 自動檢測硬件將使用十六進制的等效波特值更新波特率寄存器。邏輯還會產生CPU中斷。
  5. 通過向SCIFFCT寄存器的ABD CLR(第14位)寫入1來響應中斷清除ADB位,並通過寫入0清除CDC位來禁用進一步的自動波特率鎖定。
  6. 讀取字符“A”或“a”的接收緩衝區以清空緩衝區和緩衝區狀態。
  7. 如果在CDC為1時設置ABD(表示自動波特率校準),則會發生SCI發送FIFO中斷(TXINT)。中斷服務後,CDC位必須由軟件清零。

 

 

Additionalflagandinterruptcapabilityexistsforotherreceivererrors.TheRXERRORflag
isthelogicalORofthebreakdetect(BRKDT),framingerror(FE),receiveroverrun(OE),
andparityerror(PE)bits.RXERRORhighindicatesthatatleastoneofthesefourerrorshas
occurredduringtransmission.ThiswillalsosendaninterruptrequesttotheCPUiftheRX
ERRINTENA(SCICTL1.6)bitisset.

转载于:https://www.cnblogs.com/CiAn-H/p/9898939.html


推荐阅读
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 加密世界下一个主流叙事领域:L2、跨链桥、GameFi等
    本文介绍了加密世界下一个主流叙事的七个潜力领域,包括L2、跨链桥、GameFi等。L2作为以太坊的二层解决方案,在过去一年取得了巨大成功,跨链桥和互操作性是多链Web3中最重要的因素。去中心化的数据存储领域也具有巨大潜力,未来云存储市场有望达到1500亿美元。DAO和社交代币将成为购买和控制现实世界资产的重要方式,而GameFi作为数字资产在高收入游戏中的应用有望推动数字资产走向主流。衍生品市场也在不断发展壮大。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
author-avatar
zjy396999
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有