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