极海APM32F407IG Tiny Board开发板测评5:UART通讯+SPI驱动LCD12864+I2C读取D

2023-10-26 21ic论坛极海半导体专区
LCD,开发板,温湿度传感器,MCU LCD,开发板,温湿度传感器,MCU LCD,开发板,温湿度传感器,MCU LCD,开发板,温湿度传感器,MCU

极海APM32F407IG Tiny Board开发板测评4:按键+定时器测试  对极海APM32F407IG Tiny Board开发板进行了按键+定时器测试,本文将就UART通讯+SPI驱动LCD12864+I2C读取D展开测试。


5.极海APM32F407IG Tiny Board开发板测评:UART通讯+SPI驱动LCD12864+I2C读取DHTC12温湿度

5.1UART串口通讯

UART在嵌入式领域应用的非常广泛,APM32F407拥有4个USART和2个UART,板子上引出的串口时USART1 TX:PA9 RX:PA10

简单做一个将接收到的数据原样返回的程序,代码示例

#include "Board_APM32F407_TINY.h"

#include "bsp_delay.h"

#include "apm32f4xx_tmr.h"


#define UART_BUFFER_LEN 30

uint8_t uart_buffer[UART_BUFFER_LEN] = {0};

uint8_t uart_rxindex = 0;

uint8_t uart_rxlen = 0;

uint8_t uart_txindex = 0;

uint8_t uart_txlen = 0;


void uart_init()

{

    USART_Config_T usartConfigStruct;


    usartConfigStruct.baudRate = 115200;

    usartConfigStruct.hardwareFlow = USART_HARDWARE_FLOW_NONE;

    usartConfigStruct.mode = USART_MODE_TX_RX;

    usartConfigStruct.parity = USART_PARITY_NONE;

    usartConfigStruct.stopBits = USART_STOP_BIT_1;

    usartConfigStruct.wordLength = USART_WORD_LEN_8B;

    APM_TINY_COMInit(COM1, &usartConfigStruct);

    

    USART_EnableInterrupt(TINY_COM1, USART_INT_RXBNE);

    USART_EnableInterrupt(TINY_COM1, USART_INT_IDLE);

    USART_ClearStatusFlag(TINY_COM1, USART_FLAG_RXBNE);

    NVIC_EnableIRQRequest(TINY_COM1_IRQn,0,0);

}


void readrxtotxbuffer()

{

    uart_txlen += uart_rxlen;

    uart_rxlen = 0;

    USART_EnableInterrupt(TINY_COM1, USART_INT_TXBE);

}


int main(void)

{

    APM_DelayInit();

    uart_init();

    while (1)

    {

    }

}


void SysTick_Handler(void)

{

    APM_DelayTickDec();

}


void USART1_IRQHandler(void)

{

    if(USART_ReadStatusFlag(TINY_COM1, USART_FLAG_RXBNE) == SET){

        uart_buffer[uart_rxindex++] = (uint8_t)USART_RxData(TINY_COM1);

        if(uart_rxindex == UART_BUFFER_LEN)

            uart_rxindex = 0;

        uart_rxlen++;

    }

    if(USART_ReadStatusFlag(TINY_COM1, USART_FLAG_IDLE) == SET|| uart_rxlen == 10) {

        USART_ClearStatusFlag(TINY_COM1, USART_FLAG_IDLE);

        readrxtotxbuffer();

    }

    if(USART_ReadStatusFlag(TINY_COM1, USART_FLAG_TXBE) == SET){

        if(uart_txlen > 0)

        {

            USART_TxData(TINY_COM1,uart_buffer[uart_txindex++]);

            if(uart_txindex == UART_BUFFER_LEN)

                uart_txindex = 0;

            uart_txlen--;

        }

        else

        {

            USART_DisableInterrupt(TINY_COM1, USART_INT_TXBE);

        }

    }

}


编译烧录查看效果
板子上的Geehy LINK没有串口功能,还要额外找个USB转串口工具测试,按顺序连接好串口接线


SPI驱动12864LCD
SPI是一种高速的全双工同步的通信总线,需要至少SCK MOSI MISO三根线实现数据双向传输,可以通过片选线来实现对不同设备的访问。


APM32F407拥有3个SPI,手上有个12864的LCD屏,用SPI驱动的,尝试用这块板子点亮一下。通讯需要用到5个IO:SCK MOSI CS RST A0都是输出模式,SCK用PA5 MOSI用PA7,其它的就随意了。

数据是单向传输的因此SPI配置成仅发送就行了,代码示例

#include "Board_APM32F407_TINY.h"

#include "bsp_delay.h"

#include "apm32f4xx_tmr.h"

#include "apm32f4xx_spi.h"

#include "yuyy_project_config.h"

#include "yuyy_hs12864g18b.h"


Yuyy_Hs12864g18b_Gpio_Config_t hs12864g18b_gpio_config;

void hs12864g18b_init()

{

    GPIO_Config_T GPIO_InitStructure;

    SPI_Config_T  SPI1_InitStructure;

    

    RCM_EnableAHB1PeriphClock (RCM_AHB1_PERIPH_GPIOA);

    RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_SPI1);

    RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_SYSCFG);

    

    hs12864g18b_gpio_config.cs.gpio = GPIOA;

    hs12864g18b_gpio_config.cs.pin = GPIO_PIN_3;

    hs12864g18b_gpio_config.rst.gpio = GPIOA;

    hs12864g18b_gpio_config.rst.pin = GPIO_PIN_4;

    hs12864g18b_gpio_config.a0.gpio = GPIOA;

    hs12864g18b_gpio_config.a0.pin = GPIO_PIN_6;

    hs12864g18b_gpio_config.sck.gpio = GPIOA;

    hs12864g18b_gpio_config.sck.pin = GPIO_PIN_5;

    hs12864g18b_gpio_config.mo.gpio = GPIOA;

    hs12864g18b_gpio_config.mo.pin = GPIO_PIN_7;

    

    GPIO_ConfigStructInit(&GPIO_InitStructure);

    GPIO_InitStructure.pin = GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_6;

    GPIO_InitStructure.speed = GPIO_SPEED_100MHz;

    GPIO_InitStructure.mode = GPIO_MODE_OUT;

    GPIO_InitStructure.otype = GPIO_OTYPE_PP;

    GPIO_InitStructure.pupd = GPIO_PUPD_NOPULL;

    GPIO_Config(GPIOA, &GPIO_InitStructure);

    

    #if(YUYY_HS12864G18B_USE_SOFT_SPI)

    GPIO_InitStructure.pin = GPIO_PIN_5 | GPIO_PIN_7;

    GPIO_InitStructure.mode = GPIO_MODE_OUT;

    GPIO_Config(GPIOA, &GPIO_InitStructure);

    yuyy_hs12864g18b_set_spigpio(NULL,&hs12864g18b_gpio_config);

    #else

    GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_5, GPIO_AF_SPI1);

    GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_7, GPIO_AF_SPI1);

    GPIO_InitStructure.pin = GPIO_PIN_5 | GPIO_PIN_7;

    GPIO_InitStructure.mode = GPIO_MODE_AF;

    GPIO_Config(GPIOA, &GPIO_InitStructure);

    

    SPI_ConfigStructInit(&SPI1_InitStructure);

    SPI1_InitStructure.direction = SPI_DIRECTION_1LINE_TX; //只需要发送

    SPI1_InitStructure.mode = SPI_MODE_MASTER;

    SPI1_InitStructure.length = SPI_DATA_LENGTH_8B;        //数据长度8bit

    SPI1_InitStructure.polarity = SPI_CLKPOL_HIGH;         //空闲时SCK高电平

    SPI1_InitStructure.phase = SPI_CLKPHA_2EDGE;           //第二个边沿采样

    SPI1_InitStructure.nss = SPI_NSS_SOFT;                 //软件控制片选

    SPI1_InitStructure.baudrateDiv = SPI_BAUDRATE_DIV_8;   //时钟分频系数

    SPI1_InitStructure.firstBit = SPI_FIRSTBIT_MSB;

    SPI_Config(SPI1, &SPI1_InitStructure);

    SPI_DisableCRC(SPI1);

    SPI_Enable(SPI1);

    

    yuyy_hs12864g18b_set_spigpio(SPI1,&hs12864g18b_gpio_config);

    #endif

    yuyy_hs12864g18b_init();

    yuyy_hs12864g18b_clear_screen();

}


void yuyy_hard_spi_writebyte(YUYY_SPI_TYPE spix,uint8_t dat)

{

    while (SPI_I2S_ReadStatusFlag(spix, SPI_FLAG_TXBE) == RESET);

    SPI_I2S_TxData(spix, dat);

}


int main(void)

{

    APM_DelayInit();

    hs12864g18b_init();

    yuyy_hs12864g18b_display_string_8x16(0,0,0,(uint8_t *)"APM32F407IG TEST");

    yuyy_hs12864g18b_display_string_8x16(0,2,0,(uint8_t *)"Tiny Board v1.0");

    yuyy_hs12864g18b_display_string_8x16(0,4,0,(uint8_t *)"Code by yuyy1989");

    while (1)

    {

    }

}


void SysTick_Handler(void)

{

    APM_DelayTickDec();

}


编译烧录查看效果

I2C读取DHTC12温湿度
I2C属于两线式串行总线,属于一主多从的总线结构,总线上的每个设备都有一个特定的设备地址,以区分同一I2C总线上的其他设备。APM32F407拥有3个I2C,很多传感器都是用I2C进行通讯的,接下来尝试用I2C读取DHTC12温湿度,选用PF0 PF1。

尝试用硬件I2C,结果在调用I2C_EnableGenerateStart后无论等多久I2C_ReadEventStatus(iicx, I2C_EVENT_MASTER_MODE_SELECT)返回的都是0。想参考bsp_i2c.c的驱动代码,结果用的是软件I2C,索性直接用软件I2C了,通讯代码可以直接参考bsp_i2c.c。


运行效果

授权代理商:世强先进(深圳)科技股份有限公司
技术资料,数据手册,3D模型库,原理图,PCB封装文件,选型指南来源平台:世强硬创平台www.sekorm.com
现货商城,价格查询,交期查询,订货,现货采购,在线购买,样品申请渠道:世强硬创平台电子商城www.sekorm.com/supply/
概念,方案,设计,选型,BOM优化,FAE技术支持,样品,加工定制,测试,量产供应服务提供:世强硬创平台www.sekorm.com
集成电路,电子元件,电子材料,电气自动化,电机,仪器全品类供应:世强硬创平台www.sekorm.com
  • +1 赞 0
  • 收藏
  • 评论 0

本文由咪猫转载自21ic论坛极海半导体专区,原文标题为:【极海APM32F407IG Tiny Board开发板测评】5.UART通讯+SPI驱动LCD12864+I2C读取D,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关研发服务和供应服务

评论

   |   

提交评论

全部评论(0

暂无评论

相关推荐

极海APM32F407IG Tiny Board开发板测评2:Keil MDK开发环境搭建

上文我们对极海APM32F407IG Tiny Board开发板进行了开箱测评,本文将介绍Keil MDK开发环境搭建。

2023-10-17 -  设计经验 代理服务 技术支持 批量订货

【经验】APM32F4 MCU在RT-Thread系统上添加以太网驱动和使用LwIP网络组件的方法

本文详细介绍了如何将极海半导体APM32F4 MCU在RT-Thread系统上添加以太网驱动和使用LwIP网络组件,其他APM32带有以太网控制器的MCU,在RT-Thread使用LwIP网络功能也是大同小异的,按照这个过程基本都可以把网络功能应用起来。

2023-08-25 -  设计经验 代理服务 技术支持 批量订货

APM32芯得 | 基于极海APM32E103系列MCU的SPI转CAN芯片MCP2515移植测试

极海半导体APM32E103系列MCU支持CAN协议2.0A和2.0B,通信波特率最大为1Mbit/s,并且拥有双CAN接口,能适应更多的应用场合。将杜邦线按照引脚配置,接好线后仿真就能测试回环模式下收发数据了。可以看到断点打到接收部分,可以接收到CAN数据,与发送的数据一致。

2024-11-15 -  设计经验 代理服务 技术支持 批量订货

tandby模式下,如何唤醒MCU APM32的RTC与WKUP?

APM32F103系列低功耗模式有三种:睡眠模式、停止模式和待机模式。通过关闭内核、时钟源、设置调压器来降低功耗。本文极海半导体解析了APM32的tandby模式下的RTC唤醒与WKUP唤醒功能如何实现。

2024-01-27 -  设计经验 代理服务 技术支持 批量订货

【应用】极海半导体MCU APM32F103系列用于HMI人机界面,可满足HMI功耗调整、蓝牙通信等需求

本文推荐采用极海半导体推出的APM32F103系列MCU作为HMI人机界面的主控,最高96MHz工作频率,FLASH 256K,SRAM 64K,支持FPU单元;资源丰富,有CRC/RTC/DMA通道,两个DMA;通信接口丰富。

2023-05-25 -  应用方案 代理服务 技术支持 批量订货

还可以这样玩?极海半导体APM32F411系列MCU与pyocd的火花

前段时间笔者学习了一下如何使用pyocd配合APM32F411VCTINY板在命令行下给它进行各种骚操作,在使用一段时间后就想着:pyocd是基于python的,那是不是也可以使用python脚本+pyocd使用起来呢?本文中极海半导体与大家分享能够自动化完成重复操作的设计经验。

2024-08-29 -  设计经验 代理服务 技术支持 批量订货

【经验】极海MCU APM32F103 IAP的实现方式

拿到了一块APM32F103VC的MINI开发板,在学习了一段时间后发现其有非常丰富的外设资源,主频能达到96Mhz。最近在项目中使用到了IAP(In Application Programming)功能,特来评估一下APM32F103的IAP实现方式。

2022-12-30 -  设计经验 代理服务 技术支持 批量订货

【应用】国产工业级高性能MCU APM32F407VGT6用于PLC工控板,主频168MHz,通信外设丰富

某客户主要做各种工业自动控制系统装置,其中一款国产PLC工控板主控要更换成国产物料,推荐极海工业级高性能MCU APM32F407系列,主频高达168MHz、通信外设资源丰富,工作温度范围-40℃到+85℃。

2023-03-14 -  应用方案 代理服务 技术支持 批量订货

极海联亮相2024全球MCU及嵌入式生态发展大会,展出新技术和产品并发表演讲

2024年7月25日,2024全球MCU及嵌入式生态发展大会在深圳君悦酒店举行,由AspenCore主办。极海作为特邀嘉宾在主论坛进行演讲,并展出新技术和产品,包括搭载Arm Cortex M52内核且采用Helium技术的G32R5系列实时控制MCU和针对电机市场的栅极驱动器与APM32M3514系列SoC等新品。

2024-07-29 -  原厂动态 代理服务 技术支持 批量订货

极海半导体APM32F407系列MCU支持国密算法,助力国产安全可控,适用于新能源等领域

极海推出的APM32F407系列MCU,结合当前环境要求,设计出了支持国密算法(SM2,SM3,SM4)的IP, 符合国家密码管理局认定和公布的密码算法标准及其应用规范,并凭借显著的性能优势,已应用至新能源、工业控制、医疗设备等众多领域。

2023-01-07 -  原厂动态 代理服务 技术支持 批量订货

【视频】极海APM32F407xG系列MCU培训

型号- APM32F405VGT6,APM32F091VCT6,APM32F051K6T6,APM32F091CCT6,APM32F003F6P6,APM32F051K8T6,APM32F103CCT6,APM32F405RGT6,APM32F003F6P7,APM32F103VET6,APM32E103VCT6,APM32F051C8T6,APM32F103RCT6,APM32E103ZET6,APM32F103RCT7,APM32F103VCT6,APM32F103ZET6,APM32E103RCT6,APM32E103VET6,APM32F415RGT6,APM32F407RGT6,APM32F030RCT6,APM32F091RCT6,APM32F003F6U7,APM32E103CET6,APM32F407RET6,APM32F407VGT6,APM32F415VGT6,APM32F407VET6,APM32F051K8U6,APM32F051C8U6,APM32F103TBU6,APM32F417VGT6,APM32F103RET6,APM32F051R8T6,APM32F417ZGT6,APM32F405ZGT6,APM32F051K6U6,APM32F030CCT6,APM32F030C8T6,APM32F103CBT6,APM32F103C8T6,APM32F030K6T6,APM32F030R8T6,APM32F103VBT6,APM32F103RBT6,APM32F407ZET6,APM32F407ZGT6,APM32F072VBT6,APM32F072RBT6,APM32F072RBT7,APM32F415ZGT6,APM32F407IET6,APM32F072CBT6,APM32F407IGT6,APM32F030K6U6,APM32E103RET6

极海半导体  - 商品及供应商介绍 代理服务 技术支持 批量订货

APM32F411 高性能高适配型 MCU

描述- 该资料介绍了APM32F411高性能高适配型MCU的特点和应用。这款MCU采用55nm先进工艺制程,基于Arm® Cortex®-M4F内核,具备高速运算能力和丰富的外设接口。它适用于多种工业和消费电子领域。

型号- APM32F4,APM32F411

Apr-2024  - 极海半导体  - 数据手册 代理服务 技术支持 批量订货

极海半导体32位MCU-M4选型表

极海半导体的APM32系列是基于Arm® Cortex®-M0+/M3/M4内核的优质国产32位通用MCU,具有低功耗、高性能、高集成度以及快速移植等特性。凭借优异的系统性能、丰富的协处理功能以及灵活的使用体验,有助于用户缩短产品设计时间、降低开发成本、实现性能最优化。

产品型号
品类
内核
Frequency(MHz)
FLASH(KB)
SRAM(KB)
SDRAM
Voltage
GPTMR(16bit)
GP TMR(32bit)
Advanced TMR(16bit)
Basic TMR
Systick
IWDG
WWDG
ADC 12-bit Cell
ADC 12-bit channels
DAC 12-bit channels
EMMC
SPI
I2S
I2C
U(S)ART
CAN
SDIO
USB OTG_FS
DCI
Ethernet
Package
对照型号
APM32F407IET6
32位MCU
ARM Cortex-M4
168MHz
512KB
192+4KB
1
1.8~3.6
8
2
2
2
1
1
1
3
24
2
1
3
2
3
4+2
2
1
1
1
1
LQFP176
STM32F407IET6

选型表  -  极海半导体 立即选型

极海车规级MCU凭借可靠的产品品质,斩获“2023汽车芯片50强”与“MCU创新先锋”两项大奖

近日,极海车规级MCU凭借可靠的产品品质、专业周到的客户技术支持服务,以及量产级解决方案良好的市场表现,相继斩获“2023汽车芯片50强”、“MCU创新先锋奖”两项行业大奖。作为国内领先的32位车规级芯片设计企业,极海积极布局以服务汽车智能化、电动化、网联化的快速融合。

2023-11-30 -  原厂动态 代理服务 技术支持 批量订货

APM32芯得EP.32 | 基于APM32F103 Stop模式关于WFE内核命令问题分析及解决

在学习APM32开发板关于PMU模块的内容,看到很多内容都是调用WFI内核指令进入低功耗模式,于是自己想尝试调用WFE内核指令进入低功耗模式,但在APM32F10xx中,我运用按键中断,在中断调用PMU_EnterSTOPMode库函数,用WFE内核指令进入STOP模式是存在问题的,后经查验解决了问题,于是在此进行了内容记录。

2024-05-18 -  设计经验 代理服务 技术支持 批量订货
展开更多

电子商城

查看更多

品牌:极海半导体

品类:MCU

价格:¥1.6200

现货: 100

品牌:极海半导体

品类:MCU

价格:¥14.9850

现货: 60

品牌:极海半导体

品类:MCU

价格:¥14.8500

现货: 51

品牌:极海半导体

品类:MCU

价格:¥13.5000

现货: 50

品牌:极海半导体

品类:MCU

价格:¥9.7200

现货: 50

品牌:极海半导体

品类:MCU

价格:¥12.1500

现货: 50

品牌:极海半导体

品类:MCU

价格:¥14.1750

现货: 50

品牌:极海半导体

品类:MCU

价格:¥12.4200

现货: 50

品牌:极海半导体

品类:MCU

价格:¥15.7950

现货: 50

品牌:极海半导体

品类:MCU

价格:¥9.4500

现货: 50

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

现货市场

查看更多

品牌:RENESAS

品类:16-BIT MCU

价格:¥5.5190

现货:910,635

品牌:RENESAS

品类:MCU

价格:¥5.1500

现货:200,000

品牌:恒烁

品类:MCU

价格:¥1.0800

现货:154,600

品牌:Advanced Digital Chips

品类:MCU

价格:¥6.6000

现货:100,000

品牌:RENESAS

品类:MCU

价格:¥5.8041

现货:86,925

品牌:RENESAS

品类:32-BIT GENERAL MCU

价格:¥7.3800

现货:76,715

品牌:RENESAS

品类:32-BIT GENERAL MCU

价格:¥15.3000

现货:75,000

品牌:Advanced Digital Chips

品类:MCU

价格:¥9.0000

现货:64,841

品牌:ST

品类:MCU

价格:¥15.5600

现货:58,800

品牌:RENESAS

品类:32-BIT GENERAL MCU

价格:¥257.6400

现货:58,799

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

服务

查看更多

温度传感器定制

可定制温度范围-230℃~1150℃、精度可达±0.1°C;支持NTC传感器、PTC传感器、数字式温度传感器、热电堆温度传感器的额定量程和输出/外形尺寸/工作温度范围等参数定制。

提交需求>

TFT LCD液晶显示屏/模组定制

可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。

最小起订量: 1000 提交需求>

查看更多

授权代理品牌:接插件及结构件

查看更多

授权代理品牌:部件、组件及配件

查看更多

授权代理品牌:电源及模块

查看更多

授权代理品牌:电子材料

查看更多

授权代理品牌:仪器仪表及测试配组件

查看更多

授权代理品牌:电工工具及材料

查看更多

授权代理品牌:机械电子元件

查看更多

授权代理品牌:加工与定制

世强和原厂的技术专家将在一个工作日内解答,帮助您快速完成研发及采购。
我要提问

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

研发客服
商务客服
服务热线

联系我们

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

投诉与建议

E-mail:claim@sekorm.com

商务合作

E-mail:contact@sekorm.com

收藏
收藏当前页面