chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

使用芯源CW32的CW32L012開發(fā)評估板做了spi屏幕驅動

jf_48815865 ? 來源:jf_48815865 ? 作者:jf_48815865 ? 2025-11-21 11:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在CW32生態(tài)社區(qū)以極高的性價比入手了這塊CW32L012開發(fā)評估板,開發(fā)板以底板、核心板、1.77寸TFT顯示屏構成,所有的IO口都引出了排針,這點好評,使用杜邦線可以非常方便的連接其他模塊。引腳、接口模塊的布局都非常合理,并且整板子都使用了黑色,顏值也杠杠在線的,非常方便我用來學習這顆芯片。這里邊還有一個非常小的細節(jié),這個細小的設計很貼中我的使用習慣,核心板中的功能按鍵和復位按鍵進行了區(qū)分,白色的按鍵是功能按鍵,紅色的按鍵才是復位按鍵,讓我這種分不清左邊是復位按鍵還是右邊是復位按鍵的人一下就能按中復位按鍵了;

開發(fā)板介紹

wKgZPGkf3aKAK7laAAyxJg4FOmI195.jpg

這款開發(fā)評估板的設計非常巧妙,首先是電源部分,給出了一個12V的DC直流電源插口,有自恢復保險絲和保證電流單項導通的二極管,7805線性穩(wěn)壓器將電壓從15V的電壓穩(wěn)壓到5V,需要用到5V電壓的模塊此時接到這里完成5V供電,同時我們的芯片也從這里獲得5V的供電,這款芯片是寬電壓的芯片,用5V是完全沒有問題的;AMS1117-3.3是一款非常經(jīng)典的5V穩(wěn)壓到3.3V的線性穩(wěn)壓器,此時需要用到3.3V的模塊在這里供電,在開發(fā)板的右側區(qū)域預留了大量的+5V、+3V3、GND的排針,方便外接模塊供電,這就是電源部分。

wKgZPGkf3aOAFNYNAClDwkT9wmM222.jpg

接著是顯示屏幕區(qū)域,這塊開發(fā)板做足的對屏幕的兼容,對0.91OLED,0.96OLED,1.77TFT屏幕都兼容,接口方面是4線SPI,2線的I2C,官方默認給配置的是一個8針的1.77TFT屏幕,在這篇文章我將著重介紹4線SPI,通過軟件模擬來實現(xiàn)SPI通訊協(xié)議,并測量其通訊速率。

wKgZO2kf3aWAIe-fACc_5wjxA_k566.jpg

板載的模塊設計了一個有源蜂鳴器,通過MCU的PB3引腳來控制SS8050三極管來開關斷蜂鳴器,可以完成蜂鳴器相關的實驗,三個按鍵分別是KEY1,KEY2,KEY3,三個LED燈分別是LED1,LED2,LED3,對應MCU的PB13,PB14,PB15,PA7,PA8,PC13,LED燈是低電平點亮,可以完成流水燈以及按鍵電燈實驗,一個電位器,可以調(diào)節(jié)電阻的大小,對應MCU的PB0口,通過調(diào)節(jié)電位器,來完成adc采集模擬電壓的實驗。

在核心板區(qū)域提供了TYPE-C單獨供電,留出了4針的SWO程序調(diào)式口,有一個復位按鍵和一個功能按鍵,預留了一個外部高速晶振和一個低速晶振,高速晶振支持4-32MHz,低速晶振是32.768KHz的,這款芯片沒有PLL倍頻器,內(nèi)部時鐘頻率連接到外部高速晶振時,外部高速晶振最高是多少,那么內(nèi)部時鐘頻率最高就是多少,但是這款芯片內(nèi)部的RC振蕩器是96MHz的,這個頻率可以滿足大部分使用場景,還可以節(jié)省使用外部晶振的成本,那么使用這款芯片的時候大概率就是使用內(nèi)部RC振蕩器了,官方也沒有配置外部晶振,只是設計了這個位置,估計也是和我有類似的考量吧。

最后這塊板子還提供了大量的外部模塊接口,可以拓展更多的模塊,增添了可玩性,由于這塊開發(fā)板已經(jīng)極具性價比了,出于對成本的考量,官方是沒有配備拓展模塊,預留出來的模塊接口有8Pin的mpu6050,我們外接了這個模塊可以做一些與運動檢測相關的實驗,因為這個模塊是測量橫滾角、俯仰角、偏航角的,4Pin的電子秤模塊接口,可以做電子秤的實驗,2*4Pin的WIFI模塊,可以插ESP8266物聯(lián)網(wǎng)相關的實驗,6Pin的藍牙模塊,可以做和手機通訊的實驗,9針的矩陣鍵盤接口,3Pin的溫濕度,插上dht11模塊可以測量溫度和濕度,以及預留了2個4針的串口,可以做串口通訊的實驗。

原理圖

原理圖來源于CW32生態(tài)社區(qū),官方開源了硬件原理圖;

wKgZPGkf3aaAZm6wAAJv6AOox8o828.jpg

wKgZO2kf3aeADBvmAAIvJ9gR_1w785.jpg

SPI通訊簡介

SPI,全稱為 串行外設接口,是一種高速、全雙工、同步的串行通信總線。它由摩托羅拉公司開發(fā),因其簡單和高效的特點,被廣泛應用于微控制器、傳感器、存儲器、SD卡、觸摸屏等設備之間的短距離通信。

一、核心特點

全雙工通信:數(shù)據(jù)可以同時在兩個方向上傳輸(主機發(fā)送數(shù)據(jù)的同時,也能接收從機返回的數(shù)據(jù))。

同步通信:所有數(shù)據(jù)傳輸都由主機產(chǎn)生的時鐘信號同步,通信雙方無需預先配置波特率。

高速:相比I2C、UART等協(xié)議,SPI可以達到很高的通信速率(通常可達幾十MHz甚至更高)。

簡單:協(xié)議本身非常簡單,沒有復雜的地址幀和應答機制,硬件實現(xiàn)也相對容易。

二、硬件連接(4線制)

一個標準的SPI總線需要至少4根信號線:

td {white-space:nowrap;border:0.5pt solid #dee0e3;font-size:10pt;font-style:normal;font-weight:normal;vertical-align:middle;word-break:normal;word-wrap:normal;}

信號線名稱 全稱 方向(以主機視角) 功能描述
SCLK 串行時鐘 輸出 由主機產(chǎn)生,用于同步數(shù)據(jù)位傳輸?shù)臅r鐘信號。
MOSI 主設備輸出,從設備輸入 輸出 主機向從機發(fā)送數(shù)據(jù)的線路。
MISO 主設備輸入,從設備輸出 輸入 主機從從機接收數(shù)據(jù)的線路。
CS/SS 片選 / 從設備選擇 輸出 由主機控制,用于選中要進行通信的特定從機。此信號通常低電平有效。

連接方式:

一主一從:連接最為簡單,四根線直接相連即可。

一主多從(標準模式):這是最常用的方式。主機為每個從機提供獨立的片選信號。同一時刻,只有一個片選信號有效,從而選中一個從機進行通信。

一主多從(菊花鏈模式):所有從機共用一根片選線,數(shù)據(jù)像鏈條一樣從一個從機傳遞到下一個。這種方式節(jié)省主機的I/O口,但軟件控制更復雜,且并非所有從設備都支持。

三、通信過程與工作原理

初始化:主機配置好時鐘極性(CPOL)和時鐘相位(CPHA),這決定了時鐘的空閑狀態(tài)和數(shù)據(jù)的采樣邊沿。

選擇從機:主機將目標從機的CS引腳拉至低電平。

數(shù)據(jù)傳輸:

主機在SCLK時鐘線上產(chǎn)生時鐘脈沖。

在每個時鐘周期內(nèi),主機通過MOSI線發(fā)送一位數(shù)據(jù),同時通過MISO線讀取一位數(shù)據(jù)。

這意味著每次移位操作實際上是一次主從設備的數(shù)據(jù)交換。主機發(fā)送一個字節(jié)的同時,也會收到從機返回的一個字節(jié)。

取消選擇:通信完成后,主機將CS引腳拉回高電平。

一個生動的比喻:

可以把SPI通信想象成兩個面對面的的人(主機和從機)在進行一場同步的“說聽”練習。SCLK是節(jié)拍器,確保節(jié)奏一致。MOSI是主機說話的通道,MISO是主機聽音的通道。CS就像是主機決定是否要與對面的人對話的開關。當開關打開(CS拉低),隨著節(jié)拍器的每個節(jié)拍,主機說一個字的同時,也能聽到對方回一個字。

四、時鐘極性與相位

這是SPI配置中的一個關鍵概念,決定了時鐘空閑時的電平和數(shù)據(jù)采樣的時刻。通過組合CPOL和CPHA,主要有四種模式:

td {white-space:nowrap;border:0.5pt solid #dee0e3;font-size:10pt;font-style:normal;font-weight:normal;vertical-align:middle;word-break:normal;word-wrap:normal;}

模式 CPOL (時鐘極性) CPHA (時鐘相位) 時鐘空閑狀態(tài) 數(shù)據(jù)采樣時刻
0 0 0 低電平 時鐘的第一個邊沿(上升沿)
1 0 1 低電平 時鐘的第二個邊沿(下降沿)
2 1 0 高電平 時鐘的第一個邊沿(下降沿)
3 1 1 高電平 時鐘的第二個邊沿(上升沿)

要點:主設備和從設備必須工作在相同的模式下才能正常通信。

軟件模擬SPI通訊

總之,SPI是一種在嵌入式領域極其重要且實用的通訊協(xié)議,它在高速數(shù)據(jù)交換的設備中扮演著關鍵角色。

SPI可以通過軟件模擬和硬件外設資源實現(xiàn),軟件模擬SPI是指在不用硬件電路SPI控制器的情況下,通過通用輸入輸出引腳(GPIO)和程序代碼來模擬SPI通信時序的方法。我將通過這種方式來點亮官方配置的這一塊1.77寸TFT屏幕,讓屏幕顯示出圖片。

實現(xiàn)思路

使用普通的GPIO引腳分別模擬SCLK、MOSI、MISO、CS功能

通過程序控制引腳電平變化來生成SPI時序

用延時函數(shù)或精確計時控制通信時序

代碼實現(xiàn)

#if !defined(__SPI_H__)
#define __SPI_H__

#include "cw32l012_sysctrl.h"
#include "cw32l012_gpio.h"
#include "cw32l012_spi.h"
#include "cw32l012_systick.h"

void SPI1_Init(void);

uint8_t SPI_SwapByte(uint8_t byte);

#define SPI_W_CS(x)     GPIO_WritePin(CW_GPIOB, GPIO_PIN_5, (GPIO_PinState)x)
#define SPI_W_CLK(x)    GPIO_WritePin(CW_GPIOB, GPIO_PIN_6, (GPIO_PinState)x)
#define SPI_W_MOSI(x)   GPIO_WritePin(CW_GPIOB, GPIO_PIN_7, (GPIO_PinState)x)
#define SPI_R_MISO()    GPIO_ReadPin(CW_GPIOA, GPIO_PIN_6)
#define SPI_W_RTS(x)      GPIO_WritePin(CW_GPIOA,GPIO_PIN_15, (GPIO_PinState)x)
#define SPI_W_DC(x)       GPIO_WritePin(CW_GPIOB,GPIO_PIN_4, (GPIO_PinState)x)

#endif // __SPI_H__
#include "SPI.h"

void SPI1_Init(void)
{
    SYSCTRL_AHBPeriphClk_Enable(SYSCTRL_AHB_PERIPH_GPIOA|SYSCTRL_AHB_PERIPH_GPIOB, ENABLE);
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.IT = GPIO_IT_NONE;
    GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStructure.Pins = GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7;
    GPIO_Init(CW_GPIOB, &GPIO_InitStructure);
    GPIO_InitStructure.IT = GPIO_IT_NONE;
    GPIO_InitStructure.Mode = GPIO_MODE_INPUT;
    GPIO_InitStructure.Pins = GPIO_PIN_6;
    GPIO_Init(CW_GPIOA, &GPIO_InitStructure);
    GPIO_WritePin(CW_GPIOB, GPIO_PIN_6, GPIO_Pin_RESET);
    GPIO_WritePin(CW_GPIOB, GPIO_PIN_5, GPIO_Pin_SET);

    GPIO_InitStructure.IT = GPIO_IT_NONE;
    GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStructure.Pins = GPIO_PIN_15;
    GPIO_Init(CW_GPIOA, &GPIO_InitStructure);
}

uint8_t SPI_SwapByte(uint8_t byte)
{
    uint8_t read_byte = 0x00;
    for (uint8_t i = 0; i < 8; i++)
    {
        if (byte & 0x80)
        {
            SPI_W_MOSI(1);
        }
        else
        {
            SPI_W_MOSI(0);
        }
        byte 

這就是軟件模擬SPI的底層驅動,由于屏幕顯示圖片的代碼數(shù)量太長了,這里就沒有分享出來了;

軟件模擬SPI的優(yōu)缺點

優(yōu)點

靈活性高:可以在任何有GPIO的設備上實現(xiàn)

引腳可配置:可以任意選擇可用的GPIO引腳

多設備支持:可以輕松創(chuàng)建多個SPI總線實例

調(diào)試方便:可以添加調(diào)試信息和時序監(jiān)控

成本低:不需要專門的硬件SPI控制器

缺點

速度較慢:受限于CPU速度和軟件延時精度

CPU占用高:通信期間CPU需要持續(xù)處理時序

時序精度差:受中斷和其他任務影響,時序可能不穩(wěn)定

實時性差:不適合高速或實時性要求高的應用

實現(xiàn)復雜:需要仔細處理各種SPI模式和時序

實現(xiàn)效果

wKgZPGkf3aiAEdbJACYcvKK13DU588.jpg

傳輸速度測試

這次對于SPI的實驗做到這里其實基本算已經(jīng)完成了,但是每次寫通訊協(xié)議的代碼的時候,我都希望把每種通訊協(xié)議的性能拉滿,然后看看具體能達到多少速度,這次正好寫了SPI通訊的文章,出于對軟件模擬SPI通訊協(xié)議速度的好奇,那么我就想在這里測一測我這個實驗的通訊協(xié)議的速度;

這顆芯片的官方手冊說明了內(nèi)部集成 3個串行外設接口(SPI), 主機模式下 SCK 頻率高達 24MHz,理論上最大的傳輸速度是24Mbit/s,實際的傳輸速度是遠遠低于這個傳輸速度的,因為成功發(fā)送一個字節(jié)數(shù)據(jù)有協(xié)議開銷,處理器和軟件開銷。這是硬件SPI支持的最大數(shù)據(jù)傳輸速度,大家可以從我的底層代碼可以看到,MCU內(nèi)核對于代碼的執(zhí)行我是沒有添加任何的延時阻塞的,我在main.c中把時鐘的也配置到了這顆芯片最大的時鐘頻率96MHz,那么這顆芯片處理SPI底層代碼,也就是發(fā)送一個字節(jié)的數(shù)據(jù)是按照最大速度執(zhí)行的,然后我找來了示波器。

我們來看看示波器測試的結果:

wKgZO2kf3aqAcKC0ACnfqjlY-GE038.jpg

黃色的線是SCLK的波形,藍色是MOSI信號線的波形

wKgZPGkf3auANNYCAClnCNzAqyo356.jpg

通過示波器的光標我們可以看到發(fā)送一個字節(jié)需要的時間是18.6us,發(fā)送一位需要的時間就是18.6us/8=2.325us,那么1s發(fā)送的位數(shù)為:1s/2.325us=430107.5268,約等于430.107Kbit/s。即使去掉MCU內(nèi)核去處理其他代碼的時間,黃色的線間距較寬的地方就是內(nèi)核去處理其他代碼的時候,那么發(fā)送8個bit位用時14us,發(fā)送一位需要的時間就是14us/8=1.75us,1s發(fā)送的數(shù)據(jù)位是1s/1.75us=571428.5714,約等于571.428Kbit/s;


審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    CW32L012與STM32G431的CORDIC三角函數(shù)運算性能對比

    本文對比均為作者實測,結果僅供參考,可附代碼供有意者評估~ STM32G431是STM32家族中較新的產(chǎn)品。CW32L012也是武漢半導體最新推出的混合信號MCU,讓我們深入分析基
    的頭像 發(fā)表于 12-29 15:55 ?2494次閱讀
    <b class='flag-5'>CW32L012</b>與STM32G431的CORDIC三角函數(shù)運算性能對比

    CW32L012與STM32F103的三角運算性能對比

    ? ?CW32L012和STM32F103在定位和性能上差異顯著,在三角函數(shù)的運算性能上的對比亦非常直觀。 一、 硬件架構對比(性能基礎) 芯片型號 CW32L012C8 STM32F103C8
    的頭像 發(fā)表于 12-29 15:32 ?2324次閱讀
    <b class='flag-5'>CW32L012</b>與STM32F103的三角運算性能對比

    請問CW32 MCU支持哪些匯編語言?

    CW32 MCU支持哪些匯編語言?
    發(fā)表于 12-23 06:14

    請問CW32SPI時鐘頻率可調(diào)嗎?

    CW32SPI時鐘頻率可調(diào)嗎?
    發(fā)表于 12-15 06:03

    CW32 MCU有RISC-V架構的MCU嘛?性能如何?

    CW32 MCU有RISC-V架構的MCU嘛?性能如何?
    發(fā)表于 12-10 06:16

    基于CW32 MCU的LED閃爍示例及代碼分析

    準備: CW32開發(fā)板 一個LED 電阻及基礎連接線 開發(fā)環(huán)境:我使用的是Keil作為開發(fā)
    發(fā)表于 12-04 06:52

    基于武漢CW32F030C8T6直流無刷電機評估開發(fā)板的設計方案

    開發(fā)板   CW32_BLCD_EVA評估套件,含有一套專用下載調(diào)試器,一塊評估主體,一臺BLDC電機(帶120度霍爾傳感)及一臺24V3
    發(fā)表于 12-04 06:16

    CW32L012小型機器人控制評估活動 四足機器人+智能小車 開箱評測

    。 這次CW32L012的評測活動,CW32生態(tài)社區(qū)將開發(fā)板、以及各類套件與相關資料(技術資料、例程代碼、視頻教程等)準備得非常豐富,對初學者非常地有好,可以說是手把手帶你入門,新手小白可以趁機入手
    發(fā)表于 11-24 23:44

    **CW32L012****開發(fā)評估的第一個程序**

    CW32L012****開發(fā)評估的第一個程序 最近以15.99在CW32生態(tài)社區(qū)入手了這塊CW32L0
    發(fā)表于 11-22 00:09

    CW32L012小機器人的電機控制

    線的大功率調(diào)速,電機的控制性能直接決定了系統(tǒng)的響應速度、運行精度、能耗效率與穩(wěn)定性。這里分享CW32L012小機器人的正反轉、調(diào)速的電機控制 電機的正反轉 從配套的開發(fā)板資料介紹中可以知道,這是電機的驅動芯片RZ7899 從立創(chuàng)
    的頭像 發(fā)表于 11-21 13:18 ?2395次閱讀
    <b class='flag-5'>CW32L012</b>小機器人的電機控制

    【活動評測】基于CW32的wegui實驗+代碼

    簡介 最近參加了cw32生態(tài)社區(qū)的體驗活動,CW32L012C8T6評估是一款非常典型的、用于展示和評估國產(chǎn)低功耗MCU的
    的頭像 發(fā)表于 11-19 16:37 ?840次閱讀
    【活動評測】基于<b class='flag-5'>CW32</b>的wegui實驗+代碼

    CW32 MCU用什么IDE開發(fā)

    推薦使用IAR Embedded Workbench for ARM、Keil μVision for ARM等IDE開發(fā)CW32 MCU應用,其中新版本IAR EWARM直接支持CW32 MCU,Keil MDK-ARM則需要
    發(fā)表于 11-12 07:52

    CW32L011電機驅動開發(fā)板——驅動無刷電機

    CW32L011電機驅動開發(fā)板
    的頭像 發(fā)表于 08-22 10:02 ?1032次閱讀
    <b class='flag-5'>CW32L</b>011電機<b class='flag-5'>驅動</b><b class='flag-5'>開發(fā)板</b>——<b class='flag-5'>驅動</b>無刷電機

    堅持繼續(xù)布局32位MCU,進一步完善產(chǎn)品陣容,96Mhz主頻CW32L012新品發(fā)布!

    評估開發(fā)板資料,方便應用代碼評測; CW32L012的推出,進一步豐富了武漢半導體的低功
    發(fā)表于 07-16 16:32

    武漢半導體CW32L010在兩輪車儀表的應用介紹

    介紹的兩輪車儀表方案是無錫梓軒電子基于武漢半導體 CW32L010F8P6開發(fā),適用于小規(guī)格電動車儀表方案,實現(xiàn)車輛速度、累計里程、單次里程、模式狀態(tài)、故障狀態(tài)顯示等功能。 電動車
    發(fā)表于 05-13 14:06