小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

雜七雜八的整理——STM32、Proteus使用、UART、IIC、SPI、LIN

 幽州淺水 2021-02-19
  • 簡要介紹兩款A(yù)RM架構(gòu)單片機(jī)

一、 S32K1xx 系列單片機(jī)

S32K系列單片機(jī)是NXP比較新的車規(guī)級(jí)單片機(jī),有S32K11x(基于ARM Cortex-M0+)和S32K14x(基于ARM Cortex-M4F)兩個(gè)系列。NXP就是恩智浦,之前收購飛思卡爾的那個(gè),NXP為自己的單片機(jī)提供了集成開發(fā)環(huán)境——S32 Design Studio,安裝步驟如下:

1.在官網(wǎng)下載安裝包,需要注冊一個(gè)賬號(hào),按提示注冊即可:
https://www./design/software/development-software/s32-design-studio-ide/s32-design-studio-for-s32-platform:S32DS-S32PLATFORM
2.安裝軟件,注意需要對許可協(xié)議進(jìn)行“Accept”的時(shí)候把滾動(dòng)條拉倒最下面才能點(diǎn)擊“Accept”。
3.遇到需要輸入激活碼的地方,在剛剛下載的網(wǎng)頁中找到Licensing-Licence list,然后找到Activation code。
4.選中Offline激活方式,保存生成的xml文件。
5.在剛剛下載的網(wǎng)頁上選擇offline方式激活,選擇剛剛生成的xml文件進(jìn)行激活。
接下來的詳細(xì)步驟記不清了。。不難,按提示一步步來即可。應(yīng)該是在網(wǎng)頁上會(huì)利用xml文件再生成一個(gè)注冊文件,再在軟件中導(dǎo)入就行了。

這款單片機(jī)性能比較好,而且是ARM架構(gòu),NXP提供的開發(fā)環(huán)境還支持AUTOSAR架構(gòu),比較適合性能要求較高的場景。

開發(fā)時(shí)可以從S32DS的模板開始,有關(guān)這款單片機(jī)和其開發(fā)環(huán)境不多做介紹,給大家推薦一個(gè)微信公眾號(hào):汽車電子expert成長之路。博主是恩智浦的資深汽車電子應(yīng)用工程師,經(jīng)常在公眾號(hào)分享單片機(jī)知識(shí)和開發(fā)方法,干貨滿滿。下面這個(gè)資料就是他給別人培訓(xùn)這款單片機(jī)及開發(fā)環(huán)境的一個(gè)PPT,分享給大家,不要積分,借花獻(xiàn)佛(不過CSDN貌似會(huì)不定期自動(dòng)調(diào)整積分。。。)

//download.csdn.net/download/weixin_42967006/12232212

二、STM32

這款單片機(jī)大家可能都比較了解,我就不詳細(xì)說了。需要注意的一點(diǎn)是STM32貌似沒有通過車規(guī)級(jí)認(rèn)證,但因?yàn)樗詢r(jià)比高,資源豐富,在車輛內(nèi)飾等器件上仍然被用著。

我是剛剛開始接觸STM32,說幾個(gè)近期學(xué)習(xí)中遇到的問題點(diǎn)。

1.STM32是可以用Proteus仿真的

最新的Proteus版本支持了STM32F1XX和STM32F4XX系列的多款單片機(jī)。但是Proteus目前貌似還不支持STM32與Keil聯(lián)調(diào),反正我調(diào)試了很久一直是聯(lián)調(diào)失敗。。但proteus是支持51單片機(jī)和Keil聯(lián)調(diào)的,部分ARM單片機(jī)理論上也支持,但沒有調(diào)試過。一會(huì)介紹聯(lián)調(diào)方法,先說在Proteus中仿真STM32的方法:
(1)Keil工程中設(shè)置生成elf文件:
在這里插入圖片描述
(2)將Proteus工程放在Keil輸出文件夾下,然后在單片機(jī)中加載生成的elf文件,就可以進(jìn)行仿真了,暫停時(shí)可以看到匯編代碼。加載elf文件相對于hex文件的好處就是可以看到變量值。
注意:Proteus軟件如果不用管理員權(quán)限打開的話可能無法加載元器件庫,可在快捷方式處設(shè)置默認(rèn)為管理員權(quán)限打開。

  • Proteus與C51聯(lián)調(diào)方法如下:

(1)先在proteus官網(wǎng)下載一個(gè)聯(lián)調(diào)驅(qū)動(dòng)文件:
http://downloads./vdmagi.exe
(2)安裝驅(qū)動(dòng)程序,如果要聯(lián)調(diào)ARM,版本這里要選V3: 在這里插入圖片描述
目標(biāo)文件夾選擇Keil的安裝文件夾:
在這里插入圖片描述
安裝好之后在Keil安裝目錄下C51和ARM的BIN文件夾下可以分別看到兩個(gè)名為VDM51.dll和VDMARM.dll的DLL,這兩個(gè)其實(shí)就是驅(qū)動(dòng),此外還修改了Keil的TOOLS.INI文件,例如C51的添加了下面這個(gè),以上就是這個(gè)驅(qū)動(dòng)小軟件做的工作。有驅(qū)動(dòng)DLL的話,手動(dòng)更改通常也能成功。另外需要注意的是安裝完這個(gè)驅(qū)動(dòng)后有可能導(dǎo)致Keil不能正常打開,我遇到了一次,最后是重裝Keil解決的。。。所以能手動(dòng)就盡量手動(dòng)吧,先把DLL驅(qū)動(dòng)放到相應(yīng)地文件夾,然后參照下圖修改TOOLS.INI文件,TDRV后面的序號(hào)找一個(gè)前面沒用過的就行,要注意如果這個(gè)序號(hào)太大,例如十幾,Keil軟件中可能顯示不全,找不到這個(gè)調(diào)試器(如下一張圖),所以最好插入到前面某個(gè)序號(hào)。C51和ARM的驅(qū)動(dòng)DLL大家可以從下面的鏈接下載:
//download.csdn.net/download/weixin_42967006/12236045
在這里插入圖片描述
(3)安裝完成后打開Keil工程的debug設(shè)置,就可以看到調(diào)試器中有一個(gè)Proteus VSM Simulator選項(xiàng):
在這里插入圖片描述
選中這個(gè)選項(xiàng),再點(diǎn)擊“setting”,設(shè)置成下面這樣,通常默認(rèn)就是這樣:
在這里插入圖片描述
(4)然后在Proteus中勾選:Debug-Enable Remote Debug Monitor,再在Keil軟件中點(diǎn)擊開始Debug,就會(huì)看到Proteus工程被調(diào)用起來了,接下來的調(diào)試和用硬件開發(fā)板相同。
注意:聯(lián)調(diào)是調(diào)用的本地服務(wù)器,如果出現(xiàn)調(diào)用失敗或端口無法訪問的情況,可嘗試如下辦法:
在控制面板中打開程序和功能,找到Internet Information Services,設(shè)置成下面這樣,然后點(diǎn)完成:
在這里插入圖片描述
(5)嘗試聯(lián)調(diào)STM32的時(shí)候,點(diǎn)擊開始調(diào)試總是出現(xiàn)如下的連接失敗,一直沒有解決。
在這里插入圖片描述

2.STM32開發(fā)方法

STM32有專用的IDE STM32CubeMX,上文提到過,新建一個(gè)工程時(shí)要先獲取相應(yīng)單片機(jī)型號(hào)的基礎(chǔ)軟件包,如下圖。應(yīng)用層軟件的開發(fā)都可以基于STM給提供的HAL庫,比較清晰。

3.STM32的硬件IIC

STM32的硬件IIC貌似是有Bug。。我調(diào)了好久都沒有調(diào)試成功,寄存器的值總是不對。網(wǎng)上大家也說有Bug,通常都用I/O口模擬IIC,所以大家權(quán)衡一下,可以適當(dāng)避開這個(gè)坑。調(diào)SPI的時(shí)候相對來說就很順利。


  • 幾種通信協(xié)議及其應(yīng)用場景舉例——UART、IIC、SPI

一、UART

UART是異步串行全雙工通信協(xié)議,兩個(gè)通信實(shí)體之間只有收發(fā)兩根線,沒有時(shí)鐘信號(hào)線,這意味著雙方必須先商量好波特率才能進(jìn)行通信,常用波特率有9600,19200,115200等。數(shù)據(jù)幀格式如下:
在這里插入圖片描述
空閑狀態(tài):1,高電平
起始位:0
數(shù)據(jù)位:可配置為7位或8位,通常用8位
數(shù)據(jù)場發(fā)送順序:LSB->MSB,即小端序,低位在前
奇偶校驗(yàn)位:可選,規(guī)則如下:

  • 奇數(shù)校驗(yàn):例如A(0100 0001)字符的8個(gè)bit位中有兩個(gè)1,那么奇偶校驗(yàn)位為1才能滿足1的個(gè)數(shù)為奇數(shù)。
  • 偶數(shù)校驗(yàn):A字符的8個(gè)bit位中有兩個(gè)1,那么奇偶校驗(yàn)位為0才能滿足1的個(gè)數(shù)為偶數(shù)。

停止位:一個(gè)字符數(shù)據(jù)的結(jié)束標(biāo)志。長度可配置,可以是1位、1.5位(不常用)、2位的高電平。

UART開發(fā)比較簡單,STM32自帶的UART也可以直接用,不做過多介紹。轉(zhuǎn)一篇大神的帖子,介紹的比較詳細(xì):
https://blog.csdn.net/zjy900507/article/details/79789671

二、IIC

IIC是同步串行半雙工總線,一條串行數(shù)據(jù)線SDA,一條時(shí)鐘線SCL。

1.協(xié)議

(1)數(shù)據(jù)有效性

在SCL高電平時(shí),要求SDA的數(shù)據(jù)穩(wěn)定,SDA僅可以在SCL為低電平時(shí)改變。
在這里插入圖片描述

(2)起始和結(jié)束條件

起始條件:當(dāng)SCL為高電平的時(shí)候,SDA線上由高到低的跳變被定義為起始條件;
結(jié)束條件:當(dāng)SCL為高電平的時(shí)候,SDA線上由低到高的跳變被定義為停止條件。
總線在起始條件之后被視為忙碌狀態(tài),在停止條件之后被視為空閑狀態(tài)。
在這里插入圖片描述

(3)數(shù)據(jù)傳輸

高位在前(MSB),傳輸?shù)拿總€(gè)字節(jié)必須為8位,其后跟著一個(gè)響應(yīng)位。傳輸總字節(jié)數(shù)不受限制。從機(jī)可以在通訊過程中通過拉低SCL線迫使主機(jī)進(jìn)入等待狀態(tài),當(dāng)從機(jī)準(zhǔn)備好之后再釋放SCL線繼續(xù)數(shù)據(jù)傳輸。當(dāng)從設(shè)備發(fā)生異常情況,無法應(yīng)答時(shí),從設(shè)備也會(huì)主動(dòng)將SCL拉低,阻止后續(xù)數(shù)據(jù)的繼續(xù)發(fā)送。

(4)應(yīng)答

每當(dāng)主機(jī)向從機(jī)發(fā)送完一個(gè)字節(jié)的數(shù)據(jù),主機(jī)總是需要等待從機(jī)給出一個(gè)應(yīng)答信號(hào),以確認(rèn)從機(jī)是否成功接收到了數(shù)據(jù)。從機(jī)應(yīng)答主機(jī)所需要的時(shí)鐘仍是主機(jī)提供的,應(yīng)答出現(xiàn)在每一次主機(jī)完成8個(gè)數(shù)據(jù)位傳輸后緊跟著的時(shí)鐘周期,低電平0表示應(yīng)答,1表示非應(yīng)答。
在這里插入圖片描述

(5)數(shù)據(jù)幀格式

在起始信號(hào)后,主機(jī)需先發(fā)送一個(gè)從機(jī)地址(7bit),第8位是數(shù)據(jù)傳輸方向:
0:主機(jī)發(fā)送數(shù)據(jù)(T);
1:主機(jī)接收數(shù)據(jù)(R)。
每次數(shù)據(jù)傳送總是由主機(jī)產(chǎn)生的終止信號(hào)結(jié)束。但如果主機(jī)希望繼續(xù)占用總線發(fā)送新的數(shù)據(jù),不管是不是用一個(gè)從機(jī),都可以不產(chǎn)生終止信號(hào),直接產(chǎn)生新的起始信號(hào)并開始尋址和數(shù)據(jù)傳輸流程。
在總線的一次數(shù)據(jù)傳輸過程中可以有以下幾種組合方式(藍(lán)色表示主機(jī)控制SDA,白色表示從機(jī)):

(a)主機(jī)向從機(jī)發(fā)送數(shù)據(jù),數(shù)據(jù)傳送方向在整個(gè)傳送過程中不變:
在這里插入圖片描述
(b)主機(jī)從從機(jī)讀取數(shù)據(jù):
在這里插入圖片描述
?在傳送過程中,當(dāng)需要改變傳送方向時(shí),起始信號(hào)和從機(jī)地址都被重復(fù)產(chǎn)生一次,但兩次讀/寫方向位正好反相:
在這里插入圖片描述

2.IIC的應(yīng)用——M24C64 EEPROM芯片

這是一款基于IIC總線的存儲(chǔ)芯片,64K,尋址位有3個(gè),即可以為總線內(nèi)的8塊相同的芯片分配單獨(dú)的地址。引腳和封裝如下圖:
在這里插入圖片描述
這款芯片的讀寫規(guī)則大概如下:
有兩種讀寫方式:按隨機(jī)地址讀取和按特定頁讀取,通過IIC的尋址字節(jié)的高四位來區(qū)分(低4位是3位芯片地址和一個(gè)IIC的讀寫控制位)。在IIC的尋址字節(jié)后緊跟著兩個(gè)字節(jié)的片內(nèi)陸址,具體的使用方法可參考芯片手冊,難度不大,不做詳細(xì)介紹。手冊下載:
https://download.csdn.net/download/weixin_42967006/12240815

三、SPI

SPI是同步串行全雙工總線,速率通常比IIC要高,能達(dá)到幾Mbit/s。
缺點(diǎn):沒有流控制,沒有應(yīng)答機(jī)制確認(rèn)是否成功收到,這是跟IIC相比數(shù)據(jù)可靠性方面略差的一點(diǎn)。

1.協(xié)議

(1)物理層

以主從方式工作,這種模式通常有一個(gè)主設(shè)備和一個(gè)或多個(gè)從設(shè)備,雙向通信需要至少4根線,單向通信至少3根線:
SDO/MOSI – 主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入;
SDI/MISO – 主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出;
SCLK – 時(shí)鐘信號(hào),由主設(shè)備產(chǎn)生,支持的最高通訊速率為fpclk/2,即所掛載引腳的速率的一半。如對STM32來說,SPI2掛載在APB1總線上,則其最高速率為36MHz / 2 = 18MHz;
CS/SS/NSS – 從設(shè)備使能信號(hào),由主設(shè)備控制。高使能還是低使能根據(jù)具體從機(jī)的特性決定。下文默認(rèn)為低電平使能。
常見拓?fù)洌?br> 在這里插入圖片描述

(2)數(shù)據(jù)起始、停止信號(hào)、數(shù)據(jù)轉(zhuǎn)換和采樣

①處為起始信號(hào),即片選信號(hào)線由高變低。從機(jī)檢測到自己的NSS線電平被置低,則開始與主機(jī)通訊。
⑥處為停止信號(hào),即片選信號(hào)線由低變高。;從機(jī)檢測到自己的NSS線電平被置高,則停止通訊。
②④處為觸發(fā)數(shù)據(jù)信號(hào)轉(zhuǎn)換的時(shí)刻,③⑤處為數(shù)據(jù)采樣時(shí)刻。這兩個(gè)時(shí)間點(diǎn)可配置,見下文。
在這里插入圖片描述

(3)通訊規(guī)則

MOSI和MISO線在SCK的每個(gè)時(shí)鐘周期傳輸一位數(shù)據(jù),開發(fā)者可以自行設(shè)置MSB或LSB先行,不過需要保證兩個(gè)通訊設(shè)備都使用同樣的協(xié)定。從上圖看到,在SCK的上升沿和下降沿時(shí)進(jìn)行觸發(fā)和采樣,但實(shí)際SPI有四種通訊模式,四種模式的主要區(qū)別便是總線空閑時(shí)SCK的狀態(tài)及數(shù)據(jù)采樣時(shí)刻。這涉及到“時(shí)鐘極性CPOL”和“時(shí)鐘相位CPHA”,由CPOL和CPHA的組合而產(chǎn)生了四種的通訊模式。主從機(jī)需要工作在相同的模式下才能正常通訊。
CPOL:即在沒有數(shù)據(jù)傳輸時(shí),時(shí)鐘的空閑狀態(tài)的電平。
CPHA:即數(shù)據(jù)的采樣時(shí)刻。
規(guī)則:
CPOL=0,則SCK在空閑狀態(tài)保持低電平,反之被置1則保持高電平;CPHA=0,則在SCK每個(gè)時(shí)鐘周期的第1個(gè)邊沿(奇數(shù)邊沿)進(jìn)行數(shù)據(jù)位采樣,反之被置1則在SCK每個(gè)時(shí)鐘周期的第2個(gè)邊沿(偶數(shù)邊沿)采樣。
在這里插入圖片描述
時(shí)序圖如下圖所示:
在這里插入圖片描述
STM32中,可配置SPI的數(shù)據(jù)長度是8位或16位、MSB還是LSB、波特率(最高4M),還能計(jì)算CRC。

2.SPI的應(yīng)用

一些EEPROM芯片或Flash存儲(chǔ)芯片是用的SPI總線,例如Atmel公司的AT25010/020/040系列 EEPROM 芯片,能提供128/256/512字節(jié)的空間。具體使用方法就不做介紹了,用到的話可以查芯片手冊,依據(jù)其中定義的指令和通訊時(shí)序發(fā)就好,使用方法都大同小異。芯片手冊下載地址:
//download.csdn.net/download/weixin_42967006/12241313

下面著重介紹一下LCD屏ILI9341的使用。其實(shí)ILI9341是驅(qū)動(dòng)芯片,為了方便就叫ILI9341屏了。9341支持SPI等多種通訊方式,先放兩個(gè)資料,想更詳細(xì)了解的朋友可以下載:

1.ILI9341官方使用手冊,英文原版:
//download.csdn.net/download/weixin_42967006/12241373
2.ILI9341中文翻譯手冊,在網(wǎng)上找到的,翻譯了對于開發(fā)較為有用的大部分內(nèi)容,包括指令、通訊時(shí)序等,可供參考:
//download.csdn.net/download/weixin_42967006/12241382

(1)通訊模式選擇

9341在使用SPI總線的時(shí)候有兩種模式可選擇,3線模式和4線模式,其實(shí)仔細(xì)分的話是下表中紅框的4種,被IM0-3四個(gè)引腳控制。在這里插入圖片描述
3線和4線比起來少了一個(gè)命令/數(shù)據(jù)控制線D/CX,所以3線制的數(shù)據(jù)場要為9bit,第一個(gè)bit即為D/CX的值。如下圖所示。上面的一代SPI和下面的二代SPI的區(qū)別是一代用一條SDA線來傳輸數(shù)據(jù),是半雙工模式,二代輸入輸出分別用兩根線SDI和SDO。
在這里插入圖片描述
在這里插入圖片描述

(2)通訊時(shí)序

以一代SPI通訊方式為例:
在這里插入圖片描述
在這里插入圖片描述

(3)命令

ILI9341使用手冊的第8章列出了所有命令的格式和參數(shù),以及D/CX的值。詳情可參照數(shù)據(jù)手冊。這里轉(zhuǎn)載一篇文章,總結(jié)了幾個(gè)常用的命令,可供參考:
https://blog.csdn.net/weixin_42341666/article/details/102078445

(4)驅(qū)動(dòng)程序

在網(wǎng)上找了一些ILI9341相關(guān)的資料,有一套我覺得寫得比較清晰明了的驅(qū)動(dòng)程序,還有一些雜七雜八的資料,包括電路圖、圖片轉(zhuǎn)換成可以顯示的數(shù)據(jù)的軟件、字符轉(zhuǎn)數(shù)據(jù)的小軟件等等。有需要的自己下載吧:
//download.csdn.net/download/weixin_42967006/12241575

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多