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

電賽:mspm0l1306的開發(fā)板可以燒錄程序,但是程序運行不了,怎么解決這個問題?
MSPM0L1306開發(fā)板教程之開發(fā)環(huán)境搭建

MSPM0L1306開發(fā)板教程之DMA

MSPM0L1306開發(fā)板教程之通用定時器

MSPM0L1306開發(fā)板教程之I2C

MSPM0L1306開發(fā)板教程之WWDT

MSPM0L1306 LaunchPad開發(fā)套件(LP?MSPM0L1306)

評論