基于Cortex的MCU設計

基于Cortex的MCU設計

今日更新的存貨文檔,發現日更文章還是很花時間的。保證一周更新三篇文章就行啦,本篇文章的內容起始主要取自于《Cortex-M3 權威指南》和知網下載的論文。寫的不詳細,想進一步了解的就去看這篇文檔或網上找別的資料,有錯誤的地方評論區留言或者私信我,我再更改。書本網盤鏈接如下,永久有效鏈接。
鏈接:https://pan.baidu.com/s/1Zp0L1rAnCJi8brKHjc766Q
提取碼:5v92


文章目錄

  • 基于Cortex的MCU設計
  • 一、概述
  • 二、什么是Cortex-M3內核?
    • 2.1 指令集
    • 2.2 寄存器
    • 2.3 異常和中斷
    • 2.4 存儲器映射
    • 2.5 總線接口
  • 三、芯片內部數據怎么傳輸?(AMBA總線)
    • 3.1 AHB總線特性和構成
    • 3.2 APB總線
    • 3.APB橋
  • 三、MCU外圍設備


一、概述

如下表所示,MCU大致可以分為5個發展階段,MCU的位數表示微處理器核每次處理數據的位數或者總線系統的位寬。目前電子市場的主流芯片是16位和32位處理器。
在這里插入圖片描述
MCU按照指令集可以分為復雜指令集計算機(Complex Instruction Set Computer,CISC)和精簡指令集計算機(Reduced Instruction Set Computer,RISC)。現在市面上常用的MCU采用的ARM架構是RISC指令集,該指令集的計算機處理速度更快、功耗更低。
根據MCU中才采用的存儲結構不同可以分為馮諾依曼結構和哈佛結構,前者程序指令和數據指令共用同一個存儲空間,后者程序指令和數據指令放在不同的空間。目前常用的MCU基本都是采用哈佛結構,比如ARM公司推出的ARM架構大多也是采用的哈佛結構,部分對內核要求很高的SOC系列芯片,采用的是馮諾依曼結構。本文主要講解以下基于Cortex-M3內核的MCU設計時需要具備什么硬件功能。主要是從處理器內核、系統片上總線和片上外設三部分去講解。


二、什么是Cortex-M3內核?

基于ARM的MCU控制器的制作流程如下圖所示,各大芯片廠商得到了ARM微處理器授權后,根據自身需求再處理器的基礎上添加存儲器、系統總線和外設等部件。
在這里插入圖片描述
ARM公司設計了多系列的微處理器內核,其部分Cortex-M系列的產品如下所示,Cortex-M3系列的處理器是ARM公司為高性能、低成本的平臺開發而設計。
在這里插入圖片描述
Cortex-M3具備一個完整的微控制器架構,如下圖所示,下文將會根據該內核的簡化視圖依次從指令集、寄存器、異常和中斷、存儲器映射和總線接口五大點講解內核的核心知識點。
在這里插入圖片描述

2.1 指令集

ARM處理器目前可支持兩種相互獨立的指令集,分別是32位的ARM指令集和16位的Thumb指令集,兩而cortex-M3可支持這兩個指令集,三者之間的關系如下所示。
在這里插入圖片描述

2.2 寄存器

Cortex-M3包括16個32bit的寄存器和多個特殊寄存器。特殊寄存器包括程序號狀態寄存器、中斷屏蔽寄存器和控制寄存器,其分類如下所示。
在這里插入圖片描述

2.3 異常和中斷

Cortex-M3支持11種類型的系統異常以及240個外部中斷,通過內核中搭載的嵌套向量中斷控制器(Nested Vectored Interrupt Controller,NVIC)實現對中斷和異常的響應,其系統中斷如下所示。
在這里插入圖片描述

2.4 存儲器映射

Cortex-M3的地址空間映射如下所示。

在這里插入圖片描述

2.5 總線接口

Cortex-M3處理器內核基于AHB總線協議的32位總線接口包括:I-CODE總線、D-CODE總線、系統總線和外設總線,如下所示。

在這里插入圖片描述

三、芯片內部數據怎么傳輸?(AMBA總線)

3.1 AHB總線特性和構成

計算機不同部件之間通過什么通信呢?以及各種電子設備之間通過什么傳輸數據呢?我們知道UART、I2C和SPI等通信協議都是需要對應的線纜進行通信的,并且有對應的通信協議。
那么SOC內部之間各個模塊之間的數據是怎么傳輸的呢?同樣的道理啦,也是需要在芯片內部構建對應的“線纜”和“通信規則”。即,在SOC里,單個芯片內部集成了內部總線和微處理器,那么這就稱為片上系統總線。一個新概念的提出,必定會有其定義和名字及相關規則吧。而ARM公司推出了面向高性能微處理器的片上通信協議,即先進微控制器總線結構(Advanced Microcontroller Bus Architecture)協議。我們現在常用的微處理器采用的就是AHB總線,該總線就是AMBA總線協議中的一種,其支持多總線主機和流水線操作,典型的AHB總線系統如下所示。
在這里插入圖片描述
AHB的總線信號一般分為主機接口信號、從機接口信號和其他信號三大類,部分關鍵信號名稱和作用如下表所示。
在這里插入圖片描述
AHB采用流水線傳輸操作,其數據傳輸過程如下所示。
在這里插入圖片描述

3.2 APB總線

與AHB總線不同的是,APB總線沒有流水線操作,其主要的信號描述如下所示。
在這里插入圖片描述
APB總線的傳輸狀態如下圖所示,我們可以看到,APB傳輸數據主要分為3個狀態。①外設總線的默認狀態;②SETUP狀態,有傳輸數據時候,PSEL_x信號拉高,總線保持一個SETUP周期。③ENABEL狀態,該狀態下PENABLE拉高保持一個周期,傳輸數據。如果沒有數據傳輸了則進入到狀態①,負責進入狀態②。
在這里插入圖片描述
根據以上的狀態機,APB寫傳輸的時序如下所示。
在這里插入圖片描述
APB讀傳輸時序如下。
在這里插入圖片描述

3.APB橋

AMBA總線協議提供了APB橋實現AHB總線和APB總線之間的時序切換。APB橋在總線系統中既是AHB的從機又是APB的唯一主機。APB橋接信號如下圖所示。
在這里插入圖片描述


三、MCU外圍設備

不同的生產廠商根據自身的需求會增加對應的外設,包括有定時器、輸入輸出端口、通信接口、看門狗、SPI接口、I2C接口等。
我們現在使用的32位單片機,基本都是基于ARM的內核實現的MCU。比如我們常用的STM32F103,其內核是ARM的cortex-M3內核,在內核的基礎上再配置了一些外設,如GPIO、ADC、DAC、USART、SPI、I2C等外設接口。且這些芯片公司基本都有成熟的固件庫,芯片公司已經寫好了對應外設的API接口函數,我們在應用的時候使用固件庫開發就會輕松很多,不需要再去花時間去配置對應的寄存器。但是對于一個實際的系統開發,我們需要編寫MCU控制器以外芯片對應的配置代碼,需要訪問對應芯片內部寄存器控制芯片功能。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/17191.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/17191.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/17191.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據治理與提取:未來科技發展的雙引擎

在數字化浪潮席卷全球的今天,數據已成為推動科技進步的新石油。無論是人工智能、機器學習還是物聯網,都離不開數據的支撐。然而,數據的海量增長也帶來了新的挑戰:如何有效地管理和利用這些數據?答案在于數據治理和數據…

Lightdm設置自動登錄

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言一、設置自動登錄總結 前言 熟悉嵌入式系統的人都不陌生lightdm,這個輕桌面管理器曾經是Ubuntu等一眾發行版默認的桌面,自從Ubuntu-18.…

Divisibility Part2(整除理論2)

Divisibility Part2 本節內容是Part1的進階內容,主要講的是整除在競賽中的一些常用的技巧。 數的分解 一、帶余除法 對于任意兩個整數 a 、 b ( b ≠ 0 ) a、b(b\neq 0) a、b(b0),都有唯一確定的整數 q , r q,r q,r, 滿足 a q b r (…

Oracle 序列-SEQUENCE

文章目錄 序列-SEQUENCE創建序列訪問序列序列的修改和刪除查詢序列信息 序列-SEQUENCE 創建序列 訪問序列 序列的修改和刪除 DROP SEQUENCE SEQ_EKPO;查詢序列信息 可以通過視圖 dba/all/user_sequences 查詢序列的相關信息 SELECT SEQUENCE_NAME FROM DBA_SEQUENCES WHERE …

LLM提示工程的技巧

1. 從簡單開始(Start Simple) 避免在一開始就增加太多的復雜性。 從簡單的提示開始,然后在后續提示中添加更多信息和上下文。 這樣,提示就是一個迭代過程,提示在此過程中進一步發展。 從簡單的開始,就有足…

第十二章:C# 循環

0. 簡介 循環語句用于重復執行代碼塊,直到滿足特定條件。C#提供了多種循環語句,包括for循環、while循環和do-while循環。掌握這些循環語句有助于編寫高效和簡潔的代碼。 1. for 循環 for循環用于在已知迭代次數的情況下重復執行代碼塊。for循環的語法包括初始化語句、條件…

UniApp中,在頁面顯示時觸發子組件的重新渲染

在UniApp中,要在頁面顯示時觸發子組件的重新渲染,可以利用生命周期鉤子函數來實現。具體來說,可以在頁面的onShow生命周期鉤子中調用子組件的方法或者改變子組件的props,從而觸發子組件的重新渲染。 首先,確保子組件有…

haploview單倍型分析

只需要vcf文件和候選區間信息。按照下面的代碼邏輯即可完成分析。 awk -F"\t" {if($1~/^#/){print $0}else{if($1"Chr_23" && $2>6810142 && $2<6830142){print $0}}} All.SNP.filt.recode.vcf > ud10 awk -F"\t" {p…

HTML靜態網頁成品作業(HTML+CSS)——川西旅游介紹網頁(2個頁面)

&#x1f389;不定期分享源碼&#xff0c;關注不丟失哦 文章目錄 一、作品介紹二、作品演示三、代碼目錄四、網站代碼HTML部分代碼 五、源碼獲取 一、作品介紹 &#x1f3f7;?本套采用HTMLCSS&#xff0c;未使用Javacsript代碼&#xff0c;共有2個頁面。 二、作品演示 三、代…

【C++】:string類底層的模擬實現

目錄 引言1&#xff0c;構造函數2&#xff0c;析構函數3&#xff0c;取出字符串的地址4&#xff0c;計算有效數據個數5&#xff0c;[ ]運算符重載6&#xff0c;簡單迭代器7&#xff0c;預開空間(擴容)8&#xff0c;尾插一個字符9&#xff0c;尾插一個字符串10&#xff0c;運算符…

互聯網十萬個為什么之什么是虛擬化?

虛擬化是在一臺物理計算機上同時運行多個虛擬操作系統實例的技術。虛擬操作系統上運行的這些實例被稱為虛擬機&#xff08;Virtual Machine&#xff09;或者客戶機&#xff08;Guest Machine&#xff09;。每個虛擬機都具備完整的硬件抽象&#xff0c;包括CPU、內存、網絡適配器…

【408精華知識】時鐘周期、機器周期、總線周期、指令周期、存取周期還傻傻分不清?

在做題時&#xff0c;我們經常能遇到關于“周期”的表述&#xff0c;比如時鐘周期、機器周期、總線周期、指令周期、存取周期&#xff0c;類似的表述讓我們很容易迷茫&#xff0c;那么接下來我們就看看它們到底是什么、有什么區別&#xff1f; 周期特點時鐘周期也稱為CPU時鐘周…

圖片數據增強-resize(不同插值)、各種模糊

各種不同的模糊處理 import os import cv2def apply_blur_to_images(input_folder_path, output_folder_path):# 遍歷文件夾下的所有文件for filename in os.listdir(input_folder_path):# 檢查文件類型是否為圖片if filename.endswith(.jpg) or filename.endswith(.jpeg) or …

手算示例:在神經網絡中進行后門攻擊及驗證

手算示例&#xff1a;在神經網絡中進行后門攻擊及驗證 一、神經網絡架構二、初始化參數三、數據集干凈數據&#xff08;原始數據&#xff09;帶后門數據&#xff08;污染數據&#xff09; 訓練步驟四、示例前向傳播&#xff08;干凈數據&#xff09;計算損失&#xff08;干凈數…

每天五分鐘深度學習框架pytorch:tensor張量的維度轉換大全

本文重點 在深度學習中比較讓人頭疼的一點就是矩陣的維度,我們必須構建出符合神經網絡維度的矩陣,只有將符合要求的矩陣放到神經網絡中才可以運行神經網絡,本節課程我們將學習以下tensor中維度的變化。 view和shape View和shape,這兩個方法可以完成維度的變換操作,而且使…

【C語言實現TCP通信】

要在C語言中實現TCP通信&#xff0c;您可以遵循以下步驟&#xff1a; 創建Socket&#xff1a;使用socket()函數創建套接字&#xff0c;指定協議族為AF_INET&#xff08;IPv4&#xff09;或AF_INET6&#xff08;IPv6&#xff09;&#xff0c;類型為SOCK_STREAM表示使用TCP協議。…

【相機標定系列】【相機模型】SLAM 中常用的相機模型畸變模型總結

Overview 魚眼鏡頭的成像原理分類&#xff1a; Dioptric cameras&#xff0c;通過透鏡來實現&#xff0c;主要是折射 Catadioptric cameras&#xff0c;使用一個標準相機加一個面鏡&#xff08;Shaped mirror&#xff09; polydioptric camera&#xff0c;通過多個相機重疊視…

npm的基本命令和用法

1. 安裝與初始化 安裝npm 首先&#xff0c;確保你的系統中已安裝了Node.js&#xff0c;因為npm隨Node.js一同分發。訪問Node.js官網下載并安裝適合你操作系統的版本。安裝完成后&#xff0c;在終端或命令提示符中輸入以下命令來驗證安裝&#xff1a; 1$ node -v 2$ npm -v …

[STM32-HAL庫]ADC采集-DMA中斷采集-平均值濾波-STM32CUBEMX開發-HAL庫開發系列-主控STM32F103C8T6

目錄 一、前言 二、實現步驟 1.STM32CUBEMX配置 2.Keil工程程序設計 三、結語 一、前言 本文通過STM32CUBEMX實現對ADC的數據采集和濾波操作&#xff0c;幫助各位開發者完成與模擬量輸入的采集工作。 二、實現步驟 1.STM32CUBEMX配置 以STM32F103C8T6為例&#xff0c;打開S…

3D 生成重建015-nerf2mesh從神經輻射場中提取mesh和紋理!

3D 生成重建015-nerf2mesh從神經輻射場中提取mesh和紋理&#xff01; 文章目錄 0 論文工作1 論文方法2 效果 0 論文工作 NeRF2Mesh 提出了一種從多視角 RGB 圖像重建紋理表面網格的新方法。它克服了傳統 NeRF 模型的局限性&#xff0c;由于其隱式表示&#xff0c;傳統 NeRF 模…