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