MSPM0L系列的SPI控制器最大頻率是16MHz,支持3線和4線的模式,帶有4個片選(CS),其中CS3支持命令模式(Command Mode)。
SPI控制器有獨立的4個字節(jié)接收和4個字節(jié)發(fā)送FIFO,主機(jī)數(shù)據(jù)位從7-16bit選擇,從機(jī)數(shù)據(jù)位可以從4-16位選擇。
下面通過配置一個操作外部SPI FLASH的程序來講下SPI控制器的配置,F(xiàn)LASH的型號是華邦的W25Q128。
在SYSCONFIG中,添加一個SPI外設(shè),頻率最高16MHz,根據(jù)自己的需要選擇,幀格式選擇4線模式,8位數(shù)據(jù)位,高位在前,也就是MSB,時鐘極性選擇Low,也就是沒有時鐘的時候管腳是低電平,其他默認(rèn)就可以。
先來看下W25Q64的時序,我們用一個讀芯片ID的時序來說明。
SPI發(fā)送90h指令,地址為000000h,F(xiàn)LASH芯片就會返回工廠ID ,EFh和設(shè)備ID,這顆芯片ID是16h。
也就是說,SPI發(fā)送0x90,0x00,0x00,0x00這三個字節(jié)數(shù)據(jù),芯片就會返回0xEF和0x16
需要注意的是,由于整個時序中,片選是要一直拉低的,而SPI 外設(shè)的片選在每次發(fā)送和接收完一幀后會拉高,所以FLASH的芯片的片選需要用MCU的IO口獨立控制,沒有辦法使用SPI外設(shè)的CS管腳。
所以在SYSCONFIG里還配置了一個CS的GPIO。
由于SPI的通訊時鐘只能在發(fā)送操作的時候發(fā)出,讀取操作是沒有時鐘信號發(fā)出的,所以在做讀取操作的時候,其實需要發(fā)送操作,一般我們會發(fā)送同樣與接收數(shù)據(jù)相同數(shù)量的0x00。
MSPM0L系列的SPI的控制寄存器CLT1中有一個REPEATTX,可以用來做重復(fù)發(fā)送操作,最高可以重復(fù)256次,例如我需要FLASH芯發(fā)送200幀數(shù)據(jù),則REPEATTX為199,當(dāng)我在程序中發(fā)送0x00的時候,SPI 控制器會發(fā)送200個0x00,形成200幀通訊時鐘,程序比較簡單。
使用邏輯分析儀可以看到整個過程與FLASH芯片要求的時序一致。
審核編輯:劉清
-
控制器
+關(guān)注
關(guān)注
112文章
16332瀏覽量
177803 -
SPI接口
+關(guān)注
關(guān)注
0文章
258瀏覽量
34373 -
FIFO存儲
+關(guān)注
關(guān)注
0文章
103瀏覽量
5968 -
SPI Flash
+關(guān)注
關(guān)注
1文章
13瀏覽量
10349
原文標(biāo)題:MSPM0L1306開發(fā)板教程11 - SPI
文章出處:【微信號:創(chuàng)易棧,微信公眾號:創(chuàng)易?!繗g迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論