S32K-LPSPI中文手册
低功耗串行外設接口(LPSPI)
46.1 芯片專用LPSPI信息
46.1.1 實例化信息
下表總結(jié)了該模塊在產(chǎn)品系列中每個芯片的實現(xiàn)。
每個模塊的芯片選擇的確切數(shù)量取決于封裝。 并非所有芯片選擇都可用于不同的封裝。 LPSPI2不支持任何TRGMUX相關(guān)功能,例如TRGMUX的HREQ源或TRGMUX的任何觸發(fā)器。
器件上的所有LPSPI實例都有所有記錄的LPSPI寄存器。
該設備不支持低泄漏和等待模式。 有關(guān)可用功率模式的詳細信息,請參見在可用低功率模式下的模塊操作。
46.2 介紹
46.2.1 總覽
LPSPI是一種低功耗串行外圍設備接口(SPI)模塊,它支持作為主設備和/或從設備的SPI總線的有效接口。 LPSPI可以在停止模式下繼續(xù)運行,只要有適當?shù)臅r鐘可用,并且可以通過FIFO寄存器訪問的DMA卸載來降低CPU開銷。
46.2.2 特征
LPSPI支持以下功能:
- 字大小= 32位
- 命令/發(fā)送4個字的FIFO
- 接收4個字的FIFO
- 主機請求輸入可用于控制SPI總線傳輸?shù)拈_始時間
46.2.3 框圖
46.2.4 運行模式
LPSPI模塊支持下表中描述的芯片模式。
表46-2. LPSPI模塊支持的芯片模式
| Run | 正常操作 |
| Stop | 如果Doze使能位(CR [DOZEN])清零并且LPSPI使用的外部或內(nèi)部時鐘源在停止模式下仍可工作,則可以繼續(xù)工作。 |
| Debug (the core is in Debug/Haltedmode) | 如果設置了調(diào)試使能位(CR [DBGEN]),則可以繼續(xù)操作。 |
46.2.5 信號說明
| SCK | 串行時鐘。 在從模式下輸入,在主模式下輸出。 | I/O |
| PCS[0] | 外圍芯片選擇。 在從模式下輸入,在主模式下輸出。 | I/O |
| PCS[1] / HREQ | 外圍芯片選擇或主機請求。 當HREN = 1和HRSEL = 0時,選擇主機請求引腳。 在從機模式下輸入或用作主機請求時,在主機模式下輸出。 | I/O |
| PCS[2] / DATA[2] | 四數(shù)據(jù)傳輸期間,外圍芯片選擇或數(shù)據(jù)引腳2。 在從模式下輸入,在主模式下輸出,在四數(shù)據(jù)接收傳輸中輸入,在四數(shù)據(jù)傳輸傳輸中輸出。 | I/O |
| PCS[3] / DATA[3] | 四數(shù)據(jù)傳輸期間,外圍芯片選擇或數(shù)據(jù)引腳3。 在從模式下輸入,在主模式下輸出,在四數(shù)據(jù)接收傳輸中輸入,在四數(shù)據(jù)傳輸傳輸中輸出。 | I/O |
| SOUT / DATA[0] | 串行數(shù)據(jù)輸出。 可以配置為串行數(shù)據(jù)輸入信號。 在四數(shù)據(jù)和雙數(shù)據(jù)傳輸中用作數(shù)據(jù)引腳0。 | I/O |
| SIN / DATA[1] | 串行數(shù)據(jù)輸入。 可以配置為串行數(shù)據(jù)輸出信號。 在四數(shù)據(jù)和雙數(shù)據(jù)傳輸中用作數(shù)據(jù)引腳1。 | I/O |
46.3 內(nèi)存映射和寄存器
46.3.1 LPSPI寄存器說明
46.3.1.1 LPSPI內(nèi)存映射
LPSPI0 base address: 4002_C000h
LPSPI1 base address: 4002_D000h
LPSPI2 base address: 4002_E000h
46.3.1.2 版本ID寄存器(VERID)
46.3.1.2.1 偏移
46.3.1.2.2 圖表
46.3.1.2.3 位域
| 31-24 MAJOR | 主要版本號;該只讀字段返回模塊規(guī)范的主要版本號。 |
| 23-16 MINOR | 次版本號;該只讀字段返回模塊規(guī)范的次要版本號。 |
| 15-0 FEATURE | 模塊識別號;該只讀字段返回功能集編號。 0000000000000100b-支持32位移位寄存器的標準功能集。 |
46.3.1.3 參數(shù)寄存器(PARAM)
46.3.1.3.1 偏移
46.3.1.3.2 圖表
46.3.1.3.2 位域
| 31 - 16 | 保留 |
| 15 - 8 RXFIFO | 接收FIFO大小;設置接收FIFO中的最大字數(shù),即2^RXFIFO。 |
| 7 - 0 TXFIFO | 發(fā)送FIFO大小;設置發(fā)送FIFO中的最大字數(shù),即2^TXFIFO。 |
46.3.1.4 控制寄存器(CR)
46.3.1.4.1 偏移
46.3.1.4.2 圖表
46.3.1.4.3 位域
| 31 - 10 | 保留 |
| 9 【RRF】 | 復位接收FIFO 0b-無效果 1b-接收FIFO復位 |
| 8 【RTF】 | 復位發(fā)送FIFO 0b-無效果 1b-發(fā)送FIFO復位 |
| 7 - 4 | 保留 |
| 3【DBGEN】 | 調(diào)試啟用 0b-在調(diào)試模式下模塊被禁用 1b-在調(diào)試模式下啟用了模塊 |
| 2【DOZEN】 | Doze模式啟用 啟用或禁用Doze模式 0b-在Doze模式下啟用了模塊 1b-在Doze模式下模塊被禁用 |
| 1 【RST】 | 軟件重置 復位除控制寄存器外的所有內(nèi)部邏輯和寄存器。 保持設置直到被軟件清除。 0b-主邏輯未復位 1b-主邏輯復位 |
| 0 【MEN】 | 模塊啟用 0b-模塊被禁用 1b-啟用模塊 |
46.3.1.5 狀態(tài)寄存器(SR)
46.3.1.5.1 偏移
46.3.1.5.2 圖表
46.3.1.5.3 位域
| 31 - 25 | 保留 |
| 24【MBF】 | 模塊忙標志 【0b-LPSPI空閑】【1b-LPSPI忙】 |
| 23 -14 | 保留 |
| 13【DMF】 | 數(shù)據(jù)匹配標志 表示接收到的數(shù)據(jù)已與MATCFG配置的MATCH0和/或MATCH1字段匹配?!?b-尚未收到匹配數(shù)據(jù)】【1b-已收到匹配數(shù)據(jù)】 |
| 12【REF】 | 接收錯誤標志 當接收器FIFO溢出時,該標志將置位。 設置此標志后,建議首先結(jié)束傳輸,清空接收FIFO,清除此標志,然后從頭開始重新傳輸?!?b-接收FIFO沒有溢出】【1b-接收FIFO溢出】 |
| 11【TEF】 | 發(fā)送錯誤標志 當發(fā)送FIFO欠載時,該標志將置位。 設置此標志后,建議先結(jié)束傳輸,清除此標志,然后從頭開始重新傳輸。【0b-尚未發(fā)生發(fā)送FIFO欠載】【1b-發(fā)生發(fā)送FIFO欠載】 |
| 10【TCF】 | 傳輸完成標志 當LPSPI返回空閑狀態(tài)且發(fā)送FIFO為空時,此標志將設置為主模式?!?b-所有傳輸尚未完成】【1b-所有傳輸已完成】 |
| 9【FCF】 | 幀完成標志 當PCS取反時,此標志將在每次幀傳輸結(jié)束時設置?!?b-幀傳輸尚未完成】【1b-幀傳輸已完成】 |
| 8【W(wǎng)CF】 | 字完成標志 當對接收到的單詞的最后一位進行采樣時,該標志將置位?!?b-傳輸字未完成】【1b-傳輸字已完成】 |
| 7 - 2 | 保留 |
| 1【RDF】 | 接收數(shù)據(jù)標志 【只要接收FIFO中的字數(shù)大于RXWATER,就會設置接收數(shù)據(jù)標志】【0b-接收數(shù)據(jù)未準備好】【1b-接收數(shù)據(jù)準備就緒 |
| 0【TDF】 | 發(fā)送數(shù)據(jù)標志 只要發(fā)送FIFO中的字數(shù)等于或小于TXWATER,就會置位發(fā)送數(shù)據(jù)標志。【0b-不要求發(fā)送數(shù)據(jù)】【1b-請求發(fā)送數(shù)據(jù)】 |
46.3.1.6 中斷使能寄存器(IER)
46.3.1.6.1 偏移
46.3.1.6.2 圖表
46.3.1.6.3 位域
| 31 - 14 | 保留 |
| 13【DMIE】 | 數(shù)據(jù)匹配中斷使能 【0b-禁止中斷】【1b-允許中斷】 |
| 12【REIE】 | 接收錯誤中斷使能 【0b-禁止中斷】【1b-允許中斷】 |
| 11【TEIE】 | 發(fā)送錯誤中斷使能 【0b-禁止中斷】【1b-允許中斷】 |
| 10【TCIE】 | 傳輸完成中斷使能 【0b-禁止中斷】【1b-允許中斷】 |
| 9【FCIE】 | 幀完成中斷使能 【0b-禁止中斷】【1b-允許中斷】 |
| 8【W(wǎng)CIE】 | 字完成中斷使能 【0b-禁止中斷】【1b-允許中斷】 |
| 7 - 2 | 保留 |
| 1【RDIE】 | 接收數(shù)據(jù)中斷使能 【0b-禁止中斷】【1b-允許中斷】 |
| 0【TDIE】 | 發(fā)送數(shù)據(jù)中斷使能 【0b-禁止中斷】【1b-允許中斷】 |
46.3.1.8 配置寄存器0(CFGR0)
46.3.1.8.1 偏移
46.3.1.8.2 圖表
]
46.3.1.8.3 位域
| 31 - 10 | 保留 |
| 9【RDMO】 | 僅接收數(shù)據(jù)匹配 啟用后,將丟棄所有未設置DMF的接收數(shù)據(jù)。 設置DMF后,將忽略RDMO配置。 當LPSPI空閑且DMF清零時,應設置RDMO。 禁用RDMO時,請先清除RDMO,再清除DMF,以確保不會丟失接收數(shù)據(jù)?!?b-接收到的數(shù)據(jù)照常存儲在接收FIFO中】【1b-除非設置了DMF,否則丟棄接收到的數(shù)據(jù)】 |
| 8【CIRFIFO】 | 循環(huán)FIFO使能 使能后,發(fā)送FIFO讀取指針將保存到臨時寄存器。 發(fā)送FIFO將照常排空,但是一旦LPSPI空閑且發(fā)送FIFO為空,則將從臨時寄存器中恢復讀取的指針值。 這將導致發(fā)送FIFO的內(nèi)容反復循環(huán)循環(huán)。【0b-循環(huán)FIFO被禁用】【1b-啟用循環(huán)FIFO】 |
| 7 - 3 | 保留 |
| 2【HRSEL】 | 主機請求選擇 選擇主機請求輸入的源。 當通過LPSPI_HREQ引腳啟用了主機請求功能時,將禁用LPSPI_PCS [1]功能。【0b-主機請求輸入是引腳LPSPI_HREQ】【1b-主機請求輸入是輸入觸發(fā) 】 |
| 1【HRPOL】 | 主機請求極性 配置主機請求引腳的極性。【0b-低電平有效】【1b-高電平有效 】 |
| 0【HREN】 | 主機請求啟用 在主機模式下使能時,僅當主機請求輸入有效時,LPSPI才會啟動新的SPI總線傳輸。 LPSPI繁忙時,主機請求輸入將被忽略?!?b-主機請求被禁用】【1b-啟用主機請求】 |
46.3.1.9配置寄存器1(CFGR1)
46.3.1.9.1 偏移
46.3.1.9.2 功能
僅當禁用LPSPI時,才應寫入CFGR1。
46.3.1.9.3 圖表
46.3.1.9.4 位域
| 31 - 28 | 保留 |
| 27【PCSCFG】 | 外圍芯片選擇配置 如果執(zhí)行4位傳輸,則必須設置PCSCFG?!?b-PCS [3:2]被啟用】【1b-PCS [3:2]被禁用】 |
| 26【OUTCFG】 | 輸出配置 配置輸出數(shù)據(jù)在兩次訪問之間是否處于三態(tài)(LPSPI_PCS被否定 【0b-芯片選擇取反時,輸出數(shù)據(jù)保留最后一個值】【1b-當芯片選擇取反時,輸出數(shù)據(jù)為三態(tài)】 |
| 25-24【PINCFG】 | 引腳配置 配置在單個位傳輸期間哪些引腳用于輸入和輸出數(shù)據(jù) 【00b-SIN用于輸入數(shù)據(jù),SOUT用于輸出數(shù)據(jù)】【01b-SIN用于輸入和輸出數(shù)據(jù)】【10b-SOUT用于輸入和輸出數(shù)據(jù)】【11b-SOUT用于輸入數(shù)據(jù),SIN用于輸出數(shù)據(jù)】 |
| 23-29 | 保留 |
| 18-16 【MATCFG】 | 匹配配置 配置將導致DMF設置的條件 注意:語法:* 是布爾AND,+是布爾OR 【000b-比賽被禁用】【001b-保留】【010b-010b-如果第一個數(shù)據(jù)字等于MATCH0或MATCH1,即(第一個數(shù)據(jù)字= MATCH0 + MATCH1),則啟用匹配】【011b-011b-如果任何數(shù)據(jù)字等于MATCH0或MATCH1,即(任何數(shù)據(jù)字= MATCH0 + MATCH1),則啟用匹配】【100b-100b-如果第一個數(shù)據(jù)字等于MATCH0并且第二個數(shù)據(jù)字等于MATCH1,即[[第一個數(shù)據(jù)字= MATCH0)* (第二個數(shù)據(jù)字= MATCH1)],則啟用匹配】【101b-101b-如果任何數(shù)據(jù)字等于MATCH0并且下一個數(shù)據(jù)字等于MATCH1,即[(任何數(shù)據(jù)字= MATCH0)* (下一個數(shù)據(jù)字= MATCH1)],則啟用匹配】【110b-110b-如果(第一個數(shù)據(jù)字和MATCH1)等于(MATCH0和MATCH1),即[[第一個數(shù)據(jù)字* MATCH1)=(MATCH0 * MATCH1)],則啟用匹配】【111b-111b-如果(任何數(shù)據(jù)字和MATCH1)等于(MATCH0和MATCH1),即[[任何數(shù)據(jù)字* MATCH1)=(MATCH0 * MATCH1)],則啟用匹配】 |
| 15-12 | 保留 |
| 11-8【PCSPOL】 | 外圍芯片選擇極性 配置每個外圍芯片選擇引腳的極性【0000b-PCSx低電平有效】【0001b-PCSx高電平有效】 |
| 7-4 | 保留 |
| 3【NOSTAIL】 | 沒有失速 在主機模式下,當發(fā)送FIFO為空或接收FIFO已滿時,LPSPI將停止傳輸,以確保不會發(fā)生發(fā)送FIFO欠載或接收FIFO超載。 將該位置1將禁用此功能?!?b-當發(fā)送FIFO為空或接收FIFO已滿時,傳輸將停止】【1b-傳輸不會停止,從而允許發(fā)生發(fā)送FIFO欠載或接收FIFO超載】 |
| 2【AUTOPCS】 | 自動PCS LPSPI從器件通常要求PCS在幀之間取反,以便正確操作。 當CPHA = 1時,將該位置1將導致LPSPI在每個傳輸字的末尾生成內(nèi)部PCS信號。 當該位置1時,SCK必須在每個字之間至少保持4個LPSPI功能時鐘周期(由PRESCALE配置分頻)空閑,以確保正確操作。 在主模式下,該位被忽略。【0b-自動PCS生成已禁用】【1b-啟用自動PCS生成】 |
| 1【SAMPLE】 | 采樣點 置位時,LPSPI主器件將在延遲的LPSPI_SCK邊沿上對輸入數(shù)據(jù)進行采樣。 這樣可以縮短采樣數(shù)據(jù)時的設置時間。 具有延遲LPSPI_SCK沿的主模式下的輸入數(shù)據(jù)建立時間等于從模式下的輸入數(shù)據(jù)建立時間。 在從機模式下,該位被忽略?!?b-在SCK邊緣采樣的輸入數(shù)據(jù)】【1b-在SCK延遲沿上采樣的輸入數(shù)據(jù)】 |
| 0【MASTER】 | 主模式 在主模式或從模式下配置LPSPI。 該位直接控制LPSPI_SCK和LPCPI_PCS引腳的方向?!?b-從模式】【1b-主模式】 |
46.3.1.10數(shù)據(jù)匹配寄存器0(DMR0)
46.3.1.10.1偏移
46.3.1.10.2 圖表
46.3.1.10.3 字段
| 31-0【MATCH0】 | 匹配0值 啟用接收數(shù)據(jù)匹配后,將其與接收到的數(shù)據(jù)進行比較。 |
46.3.1.12時鐘配置寄存器(CCR)
46.3.1.12.1偏移
46.3.1.12.2 功能
CCR僅在主機模式下使用,并且在啟用LPSPI時不能更改。
46.3.1.12.3 圖表
46.3.1.12.4 字段
| 31-24【SCKPCS】 | SCK到PCS的延遲 配置主模式下從最后一個SCK邊沿到PCS取反之間的延遲。 延遲等于LPSPI功能時鐘的(SCKPCS + 1)個周期除以PRESCALE配置,最小延遲為1個周期。 |
| 23-16【PCSSCK】 | PCS到SCK的延遲 在主模式下配置從PCS聲明到第一個SCK沿的延遲。 延遲等于LPSPI功能時鐘的(PCSSCK + 1)個周期除以PRESCALE配置,最小延遲為1個周期。 |
| 15-8【DBT】 | 轉(zhuǎn)移之間的延遲 在主模式下配置從PCS否定到下一個PCS聲明的延遲。 延遲等于LPSPI功能時鐘的(DBT + 2)個周期除以PRESCALE配置,最小延遲為2個周期。 請注意,一半的延遲發(fā)生在PCS聲明之前,另一半發(fā)生在PCS否定之后,完整的命令字只能在中間進行更新。 還配置主模式下從連續(xù)字傳輸?shù)淖詈笠粋€傳輸字的SCK沿到下一個傳輸字的第一個SCK沿的延遲。 延遲等于LPSPI功能時鐘的(DBT + 1)個周期除以PRESCALE配置,最小延遲為1個周期。 |
| 7-0【SCKDIV】 | SCK分頻器 在主模式下配置SCK引腳的分頻比。 SCK周期等于LPSPI功能時鐘的(SCKDIV + 2)個周期除以PRESCALE配置,最小周期為2個周期。 如果周期是奇數(shù)個周期,則周期的前半部分將比后半部分長一個周期。 |
46.3.1.13 FIFO控制寄存器(FCR)
46.3.1.13.1 偏移
46.3.1.13.2 圖表
46.3.1.13.3 字段
| 31-24 | 保留 |
| 23-18 | 保留 |
| 17-16【RXWATER】 | 接收FIFO水印 只要接收FIFO中的字數(shù)大于RXWATER,就會設置接收數(shù)據(jù)標志。 寫入等于或大于FIFO大小的值將被截斷。 |
| 15-8 | 保留 |
| 7-2 | 保留 |
| 1-0【TXWATER】 | 發(fā)送FIFO水印 只要發(fā)送FIFO中的字數(shù)等于或小于TXWATER,就會置位發(fā)送數(shù)據(jù)標志。 寫入等于或大于FIFO大小的值將被截斷。 |
46.3.1.14 FIFO狀態(tài)寄存器(FSR)
46.3.1.14.1偏移
46.3.1.14.2 圖
46.3.1.14.3 字段
| 31-24 | 保留 |
| 23-19 | 保留 |
| 18-16【RXCOUNT】 | 接收FIFO計數(shù) 返回當前存儲在接收FIFO中的字數(shù)。 |
| 15-8 | 保留 |
| 7-3 | 保留 |
| 2-0【TXCOUNT】 | 發(fā)送FIFO計數(shù) 返回當前存儲在發(fā)送FIFO中的字數(shù)。 |
46.3.1.15發(fā)送命令寄存器(TCR)
46.3.1.15.1 偏移
46.3.1.15.2 功能
寫入發(fā)送命令寄存器或發(fā)送數(shù)據(jù)寄存器會將數(shù)據(jù)按寫入順序推入發(fā)送FIFO。 在該條目到達FIFO的頂部之后,將對命令寄存器的寫操作進行標記,并使命令寄存器更新。 這允許對命令字和發(fā)送數(shù)據(jù)本身的更改進行交織。 更改命令字將導致使用新命令字執(zhí)行所有后續(xù)的SPI總線傳輸。
- 在主模式下,除非設置了TXMSK,否則寫新命令字不會啟動新傳輸。 傳輸通過發(fā)送FIFO中的發(fā)送數(shù)據(jù)或新的命令字(設置了TXMSK)啟動。 LPSPI_PCS取反時,硬件將清除TXMSK。
- 在主模式下,如果在現(xiàn)有框架完成之前更改了命令字,則現(xiàn)有框架將終止,然后命令字將更新。 如果設置了新命令字的CONTC并將命令字寫入幀大小邊界,則可以在連續(xù)傳輸期間更改命令字。
- 在從機模式下,僅當LPSPI空閑且沒有SPI總線傳輸時,才應更改命令字
讀取發(fā)送命令寄存器將返回命令寄存器的當前狀態(tài)。 從發(fā)送FIFO加載發(fā)送命令寄存器的同時讀取發(fā)送命令寄存器可能會返回錯誤的寄存器值。 建議在發(fā)送FIFO為空時讀取發(fā)送命令寄存器,或者多次讀取寄存器并比較返回值。
46.3.1.15.3 圖
46.3.1.15.4字段
| 31【CPOL】 | 時鐘極性 該字段僅在幀之間更新。0b-SCK的無效狀態(tài)值很低。1b-SCK的無效狀態(tài)值為高。 |
| 30【CPHA】 | 時鐘相位 該字段僅在幀之間更新。0b-在SCK的前沿捕獲數(shù)據(jù),并在其后沿進行更改。1b-在SCK的上升沿更改數(shù)據(jù),并在隨后的沿捕獲數(shù)據(jù)。 |
| 29-17【PRESCALE | 預分頻值 預分頻器應用于所有SPI總線傳輸?shù)臅r鐘配置寄存器。 該字段僅在幀之間更新。000b-除以1。001b-除以2。010b-除以4。011b-除以8。100b-除以16。101b-除以32。110b-除以64。111b-除以128。 |
| 26 | 保留 |
| 25-24【PCS】 | 外圍芯片選擇 配置用于傳輸?shù)耐鈬酒x擇。 該字段僅在幀之間更新。00b-使用LPSPI_PCS [0]進行傳輸01b-使用LPSPI_PCS傳輸[1]10b-使用LPSPI_PCS [2]進行傳輸11b-使用LPSPI_PCS傳輸[3] |
| 23【LSBF】 | LSB優(yōu)先 0b-數(shù)據(jù)首先傳輸MSB。1b-數(shù)據(jù)首先傳輸LSB。 |
| 22【BYSW] | 字節(jié)交換 對于從FIFO讀取的每個發(fā)送數(shù)據(jù)字和存儲到FIFO的每個接收數(shù)據(jù)字,字節(jié)交換將[31:24]的內(nèi)容與[7:0]和[23:16]的內(nèi)容與[15:8]交換 與匹配寄存器比較) 【0b-禁用字節(jié)交換】 【1b-啟用字節(jié)交換】 |
| 21【CONT】 | 連續(xù)轉(zhuǎn)移 在主模式下,連續(xù)傳輸將使PCS在幀大小的末尾保持有效,直到接收到開始新幀的命令字為止 在從模式下,當連續(xù)傳輸使能時,LPSPI將僅發(fā)送第一個FRAMESZ位,此后它將假設32位移位寄存器發(fā)送接收到的數(shù)據(jù)?!?b-禁用連續(xù)傳輸】【1b-啟用連續(xù)傳輸】 |
| 20【CONTC】 | 連續(xù)命令 在主機模式下,該位允許在連續(xù)傳輸中更改命令字。 初始命令字必須啟用連續(xù)傳輸(CONT = 1),連續(xù)命令必須將該位置1(CONTC = 1),并且連續(xù)命令字必須加載在幀大小邊界上。 例如,如果連續(xù)傳輸?shù)膸笮?4位,則必須在64位邊界上加載連續(xù)命令字 【0b-開始新傳輸?shù)拿钭帧俊?b-繼續(xù)傳輸?shù)拿钭帧?/td> |
| 19【RXMSK】 | 接收數(shù)據(jù)掩碼 置位時,接收數(shù)據(jù)被屏蔽(接收數(shù)據(jù)未存儲在接收FIFO中)。【0b-正常傳輸】【1b-接收數(shù)據(jù)被屏蔽】 |
| 18【TXMSK】 | 傳輸數(shù)據(jù)掩碼 置位時,發(fā)送數(shù)據(jù)被屏蔽(發(fā)送FIFO不會加載任何數(shù)據(jù),輸出引腳為三態(tài))。 在主機模式下,該位將啟動新的傳輸,該傳輸不能被另一個命令字中止,并且在傳輸結(jié)束時該位將被硬件清除 【0b-正常傳輸】【1b-屏蔽傳輸數(shù)據(jù)】 |
| 17-16【W(wǎng)IDTH】 | 傳輸寬度 必須為2位或4位傳輸設置RXMSK或TXMSK 【00b-一位傳輸】【01b-兩位傳輸】【10b-四位傳輸】【11b-保留】 |
| 15-12 | 保留。 軟件應僅向該位寫入零。 |
| 11-0 | 幀尺寸以等于(FRAMESZ +1)的位數(shù)配置幀大小。?最小幀大小為8位。?如果幀大小大于32位,則將幀分為多個32位字; 每個字都從發(fā)送FIFO裝入并分別存儲在接收FIFO中。?如果幀的大小不能被32整除,則發(fā)送FIFO的最后一次加載和接收FIFO的存儲將包含其余位。 例如,一個72位的傳輸將包含3個字:第一個和第二個字是32位,而第三個字是8位。?最小字長為2位; 不支持33位(或類似)的幀大小。 |
46.3.1.16發(fā)送數(shù)據(jù)寄存器(TDR)
46.3.1.16.1偏移
46.3.1.16.2功能
寫入發(fā)送命令寄存器或發(fā)送數(shù)據(jù)寄存器會將數(shù)據(jù)按寫入順序推入發(fā)送FIFO。
46.3.1.16.3圖
46.3.1.16.4字段
| 31-0【DATA】 | 傳輸資料 發(fā)送數(shù)據(jù)的8位和16位寫入都將使寫入的數(shù)據(jù)擴展為零,并將數(shù)據(jù)壓入發(fā)送FIFO。 |
46.3.1.17接收狀態(tài)寄存器(RSR)
46.3.1.17.1 偏移
46.3.1.17.2 圖
46.3.1.17.3字段
| 31-2 | 保留 |
| 1【RXEMPTY】 | 接收FIFO空 0b-RX FIFO不為空。1b-RX FIFO為空。 |
| 0【SOF】 | 幀開始 指示這是在LPSPI_PCS聲明之后接收到的第一個數(shù)據(jù)字。0b-LPSPI_PCS斷言后接收到后續(xù)數(shù)據(jù)字。1b-在LPSPI_PCS聲明后接收到的第一個數(shù)據(jù)字 |
46.3.1.18接收數(shù)據(jù)寄存器(RDR)
46.3.1.18.1偏移
46.3.1.18.2圖
46.3.1.18.3字段
| 31-0【DATA】 | 接收數(shù)據(jù) |
46.4功能描述
46.4.1時鐘和復位
46.4.1.1功能時鐘
LPSPI功能時鐘與總線時鐘異步,如果在低功耗模式下保持啟用狀態(tài),則LPSPI可以在主模式和從模式下執(zhí)行SPI總線傳輸和低功耗喚醒。 LPSPI用預分頻器對功能時鐘進行分頻,并且所產(chǎn)生的頻率必須至少比SPI外部時鐘(LPSPI_SCK)頻率快兩倍。
46.4.1.2外部時鐘
LPSPI移位寄存器由LPSPI_SCK時鐘直接提供時鐘,該時鐘在主機模式下內(nèi)部產(chǎn)生或在從機模式下外部提供
46.4.1.3總線時鐘
總線時鐘僅用于總線訪問控制和配置寄存器。 總線時鐘頻率必須足以滿足LPSPI寄存器(包括FIFO)的數(shù)據(jù)帶寬要求
46.4.1.4芯片復位
LPSPI的邏輯和寄存器在芯片復位時復位為默認狀態(tài)。
46.4.1.5軟件重置
LPSPI在控制寄存器中實現(xiàn)軟件復位位。 CR [RST]會將所有邏輯和寄存器重置為默認狀態(tài),CR本身除外。
46.4.1.6 FIFO復位
LPSPI實現(xiàn)了只寫控制位,該位將復位發(fā)送/命令FIFO(CR [RTF]和接收FIFO(CR [RRF]),復位后FIFO為空。
46.4.2主模式
46.4.2.1發(fā)送和命令FIFO
發(fā)送和命令FIFO是組合的FIFO,它既包含發(fā)送數(shù)據(jù)又包含命令字。 通過寫入發(fā)送命令寄存器將命令字存儲到發(fā)送/命令FIFO中。 通過寫入發(fā)送數(shù)據(jù)寄存器將發(fā)送數(shù)據(jù)字存儲到發(fā)送/命令FIFO。
當命令字位于發(fā)送/命令FIFO的頂部時,可能發(fā)生以下動作:
- 如果LPSPI在幀之間,則將命令字從FIFO中拉出并控制所有后續(xù)傳輸。
- 如果LPSPI忙,并且現(xiàn)有的CONT位清零或新的CONTC值清零,則SPI幀將在現(xiàn)有字的末尾完成,而忽略FRAMESZ配置。 然后將命令字從FIFO中拉出并控制所有后續(xù)傳輸(或直到命令字的下一次更新)。
- 如果LPSPI忙,并且現(xiàn)有的CONT位置1并且新的CONTC值被設置,則在現(xiàn)有幀的最后一個LPSPI_SCK脈沖(基于FRAMESZ配置)期間,將命令字從FIFO中拉出,并且?guī)^續(xù)使用 其余幀(或直到下一次更新命令字之前)的新命令值。 設置CONTC時,僅更新命令字的低24位。
可以通過讀取發(fā)送命令寄存器來讀取現(xiàn)有命令字的當前狀態(tài)。 寫入命令后(假設FIFO為空),至少需要三個LPSPI功能時鐘周期才能更新發(fā)送命令寄存器,并且必須使能LPSPI(設置CR [MEN])。
除非將TXMSK位置1,否則寫入發(fā)送命令寄存器不會啟動SPI總線傳輸。 設置TXMSK時,直到現(xiàn)有幀的末尾(基于FRAMESZ配置)將不加載新的命令字,并且在傳輸結(jié)束時將TXMSK位清零。
下表描述了由命令字控制的屬性
| CPOL | 配置LPSPI_SCK引腳的極性。 CPOL值的任何變化都會在LPSPI_SCK引腳上引起轉(zhuǎn)換。 | N |
| CPHA | 配置傳輸?shù)臅r鐘相位。 | N |
| PRESCALE | 配置用于對LPSPI功能時鐘進行分頻的預分頻器,以生成SPI總線傳輸?shù)臅r序參數(shù)。 結(jié)合PCS更改PRESCALE,可使LPSPI以不同的頻率連接到不同的從設備。 | N |
| PCS | 配置哪個LPSPI_PCS聲明要進行傳輸,LPSPI_PCS的極性是靜態(tài)的,由PCSPOL配置。 如果設置了PCSCFG,則不應選擇PCS [3:2]。 | N |
| LSBF | 配置是否首先發(fā)送/接收LSB(位0)或MSB(32位字的位31)。 | Y |
| BYSW | 在發(fā)送和接收數(shù)據(jù)時,在每個32位字上啟用字節(jié)交換。 當與將數(shù)據(jù)組織為大Endean的設備連接時很有用。 | Y |
| CONT | 配置為使PCS在幀之間保持斷言的連續(xù)傳輸(由FRAMESZ配置)。 需要新的命令字來使PCS取反。 還支持在幀大小綁定處更改命令字。 | Y |
| CONTC | 表示這是現(xiàn)有連續(xù)傳輸?shù)男旅钭帧?如果未在幀邊界上將其寫入發(fā)送/命令FIFO,則會忽略CONTC位。 | Y |
| RXMSK | 屏蔽接收數(shù)據(jù),不存儲到接收FIFO或執(zhí)行接收數(shù)據(jù)匹配。 對于半雙工傳輸或配置在接收數(shù)據(jù)匹配期間比較哪些字段很有用。 | Y |
| TXMSK | 屏蔽發(fā)送數(shù)據(jù),以便不從發(fā)送FIFO提取數(shù)據(jù),并且輸出數(shù)據(jù)引腳為三態(tài)(除非由OUTCFG配置)。 對于半雙工傳輸很有用。 | Y |
| WIDTH | 配置每個LPSPI_SCK脈沖移位的位數(shù)。?1位傳輸支持半雙工或全雙工數(shù)據(jù)格式的傳統(tǒng)SPI總線傳輸。?2位和4位傳輸對于與QuadSPI存儲設備接口非常有用,并且僅支持半雙工數(shù)據(jù)格式(還必須設置TXMSK或RXMSK中的至少一種)。 | Y |
| FRAMESZ | 以等于(FRAMESZ +1)的位數(shù)配置幀大小。?最小幀大小為8位。?如果幀大小大于32位,則將幀分為多個32位字; 每個字都從發(fā)送FIFO裝入并分別存儲在接收FIFO中。?如果幀的大小不能被32整除,則發(fā)送FIFO的最后一次加載和接收FIFO的存儲將包含其余位。 例如,一個72位的傳輸將包含3個字:第一個和第二個字是32位,而第三個字是8位。?最小字長為2位; 不支持33位(或類似)的幀大小。 | Y |
當數(shù)據(jù)被寫入發(fā)送FIFO,HREQ引腳被置為有效(或被禁止)并且使能了LPSPI時,LPSPI將啟動SPI總線傳輸。 SPI總線傳輸使用傳輸命令寄存器中配置的屬性和時鐘配置寄存器中的時序參數(shù)來執(zhí)行傳輸。 一旦達到FRAMESZ配置,或當新的發(fā)送命令字位于發(fā)送/命令FIFO的頂部時,SPI總線傳輸結(jié)束。 僅在下次LPSPI空閑時檢查HREQ輸入(完成當前傳輸并且發(fā)送/命令寄存器為空)。
發(fā)送/命令FIFO還支持循環(huán)FIFO功能。 這使LPSPI主控器可以(周期性地)重復一段短的數(shù)據(jù)傳輸,該傳輸可以適合發(fā)送/命令FIFO,而無需其他FIFO訪問。 啟用循環(huán)FIFO后,將保存FIFO讀取指針的當前狀態(tài),并且狀態(tài)標志不會更新。 一旦發(fā)送/命令FIFO被認為是空的并且LPSPI處于空閑狀態(tài),則FIFO讀取指針將與保存的版本一起恢復,因此當啟用循環(huán)FIFO模式時,發(fā)送/命令FIFO的內(nèi)容不會被永久從FIFO中拉出。
46.4.2.2接收FIFO和數(shù)據(jù)匹配
接收FIFO用于在SPI總線傳輸期間存儲接收數(shù)據(jù)。 設置RXMSK時,將丟棄接收數(shù)據(jù),而不是將其存儲在接收FIFO中。
接收數(shù)據(jù)在幀的末尾寫入接收FIFO。 在多字或連續(xù)傳輸期間,接收數(shù)據(jù)也會在從發(fā)送FIFO讀取新的發(fā)送數(shù)據(jù)的同時寫入接收FIFO。 如果在連續(xù)傳輸期間發(fā)送FIFO為空,則僅在寫入發(fā)送FIFO或?qū)懭朊罴拇嫫饕越Y(jié)束幀之后,才將接收數(shù)據(jù)寫入接收FIFO。
接收數(shù)據(jù)支持接收數(shù)據(jù)匹配功能,該功能可以將接收到的數(shù)據(jù)與兩個字之一或被屏蔽的數(shù)據(jù)字進行匹配。 數(shù)據(jù)匹配功能也可以配置為僅比較自幀開始以來的第一個或兩個接收到的數(shù)據(jù)字。 由于RXMSK位已被丟棄的接收數(shù)據(jù)不能導致數(shù)據(jù)匹配設置,并且將延遲第一個接收到的數(shù)據(jù)字的匹配,直到接收到所有被丟棄的數(shù)據(jù)。 接收器匹配功能也可以配置為使用CFGR0 [RDMO]控制位丟棄所有接收數(shù)據(jù),直到檢測到數(shù)據(jù)匹配為止。 在數(shù)據(jù)匹配后清除CFGR0 [RDMO]控制位時,在清除SR [DMF]之前清除CFGR0 [RDMO]以允許接收所有后續(xù)數(shù)據(jù)。
46.4.2.3時序參數(shù)
下表列出了用于所有SPI總線傳輸?shù)臅r序參數(shù),這些時序參數(shù)相對于LPSPI功能時鐘除以PRESCALE配置。 盡管在LPSPI繁忙時無法更改時鐘配置寄存器,但是可以在兩次傳輸之間使用命令寄存器更改PRESCALE配置,以支持與不同頻率的不同從器件的接口。
| SCKDIV | 將LPSPI_SCK時鐘周期配置為(SCKDIV + 2)周期。 當配置為奇數(shù)個周期時,LPSPI_SCK周期的前一半比后一半長一個周期。 | 0(2個周期) | 255(257個周期) |
| DBT | 將PCS否定與下一個PCS聲明之間的最小延遲配置為(DBT + 2)個周期。 在兩次傳輸之間更新命令字時,命令字更新與LPSPI_PCS引腳上的任何更改之間至少要有(DBT / 2)+1個周期。 | 0(2個周期) | 255(257個周期) |
| DBT | 將幀的最后一個SCK邊緣與連續(xù)幀的第一個SCK邊緣之間的連續(xù)傳輸期間的延遲配置為(DBT + 1)周期。 當外部從機要求在SPI總線傳輸?shù)牟煌种g存在較大延遲時,這很有用。 | 0(1個周期) | 255(256個周期) |
| PCSSCK | 將PCS聲明與第一個SCK邊沿之間的最小延遲配置為(PCSSCK + 1)個周期。 | 0(1個周期) | 255(256個周期) |
| SCKPCS | 將最后一個SCK邊沿和PCS聲明之間的最小延遲配置為(SCKPCS + 1)個周期。 | 0(1個周期) | 255(256個周期) |
46.4.2.4引腳配置
可以通過PINCFG配置將LPSPI_SIN和LPSPI_SOUT引腳配置為交換方向,甚至在同一引腳上支持半雙工傳輸。
OUTCFG配置可用于確定LPSPI_PCS取反時輸出數(shù)據(jù)引腳(例如:LPSPI_SOUT)是否將處于三態(tài),或者僅保留最后一個值。 當在單個位傳輸模式下使用相同的數(shù)據(jù)引腳或在2位和4位傳輸模式下使用任何數(shù)據(jù)引腳配置半雙工傳輸時,當LPSPI_PCS取反時,必須將輸出數(shù)據(jù)引腳配置為三態(tài)。
PCSCFG配置用于禁用LPSPI_PCS [3:2]功能,并將其用于四數(shù)據(jù)傳輸。 執(zhí)行四數(shù)據(jù)傳輸時必須啟用此選項。
46.4.2.5時鐘環(huán)回
可以將LPSPI主設備配置為使用兩個時鐘之一來采樣輸入數(shù)據(jù)(例如LPSPI_SIN),可以直接使用LPSPI_SCK輸出時鐘,也可以使用該時鐘的延遲版本。 LPSPI_SCK的延遲版本被LPSPI_SCK引腳輸出延遲加上LPSPI_SCK引腳輸入延遲所延遲,并通過設置CFGR1 [SAMPLE]進行配置。 啟用LPSPI_SCK的環(huán)回版本可以縮短從設備輸入數(shù)據(jù)的建立時間
請參考器件數(shù)據(jù)手冊,了解主環(huán)回模式下的特定輸入建立時間。
總結(jié)
以上是生活随笔為你收集整理的S32K-LPSPI中文手册的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c调用c++:opencv c版本打开相
- 下一篇: 国学*周易*梅花易数 代码实现效果展示