极海APM32F407IG Tiny Board开发板测评5:UART通讯+SPI驱动LCD12864+I2C读取D
极海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。
运行效果
- |
- +1 赞 0
- 收藏
- 评论 0
本文由咪猫转载自21ic论坛极海半导体专区,原文标题为:【极海APM32F407IG Tiny Board开发板测评】5.UART通讯+SPI驱动LCD12864+I2C读取D,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关研发服务和供应服务
相关推荐
极海APM32F407IG Tiny Board开发板测评2:Keil MDK开发环境搭建
上文我们对极海APM32F407IG Tiny Board开发板进行了开箱测评,本文将介绍Keil MDK开发环境搭建。
设计经验 发布时间 : 2023-10-17
tandby模式下,如何唤醒MCU APM32的RTC与WKUP?
APM32F103系列低功耗模式有三种:睡眠模式、停止模式和待机模式。通过关闭内核、时钟源、设置调压器来降低功耗。本文极海半导体解析了APM32的tandby模式下的RTC唤醒与WKUP唤醒功能如何实现。
设计经验 发布时间 : 2024-01-27
APM32芯得 | 基于极海APM32E103系列MCU的SPI转CAN芯片MCP2515移植测试
极海半导体APM32E103系列MCU支持CAN协议2.0A和2.0B,通信波特率最大为1Mbit/s,并且拥有双CAN接口,能适应更多的应用场合。将杜邦线按照引脚配置,接好线后仿真就能测试回环模式下收发数据了。可以看到断点打到接收部分,可以接收到CAN数据,与发送的数据一致。
设计经验 发布时间 : 2024-11-15
【应用】极海半导体MCU APM32F103系列用于HMI人机界面,可满足HMI功耗调整、蓝牙通信等需求
本文推荐采用极海半导体推出的APM32F103系列MCU作为HMI人机界面的主控,最高96MHz工作频率,FLASH 256K,SRAM 64K,支持FPU单元;资源丰富,有CRC/RTC/DMA通道,两个DMA;通信接口丰富。
应用方案 发布时间 : 2023-05-25
【视频】极海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
极海半导体(Geehy Semiconductor)微控制器MCU选型指南(英文)
描述- Geehy Semiconductor Co., Ltd. is an IC Fabless company dedicated to developing industrial & automotive-grade MCUs, analog & mixed-signal ICs, and SoCs.
型号- APM32F030,APM32F051K6T6,APM32F4,APM32F405RGT6,APM32F003F6P6,APM32F003F6P7,APM32F103VET6,APM32E103,APM32F103VET7,APM32F051C6T6,APM32F0,APM32 SERIES,APM32F103RCT6,APM32F103RCT7,APM32E103RCT6,APM32E103VET6,APM32F105RCT6,APM32F035,APM32F407RGT6,GALT61120,APM32F030RCT6,APM32E103CET6,AGW32F103T4T6S,GW8811,APM32F407VET6,APM32A407ZGT7,GURC01,APM32A091RCT7,APM32F003F4U6,APM32A091,APM32F411VET6,APM32F051C6U6,APM32F103TBU7,APM32F103TBU6,APM32F107RBT6,G32A1445,APM32F051R8T6,APM32F417ZGT6,APM32F411CET6,G32A,APM32F405ZGT6,APM32F051K6U6,APM32M3514C8T7,APM32F030C8T6,G32A1445UAT0MLL,AGM32F103T4T6S,G32A1445UAT0MLH,APM32F103C8T6,APM32F103RBT7,APM32F411,GW3323HGU6,APM32F030K8T6,APM32F103RBT6,APM32A407,APM32F417,APM32F091CBU6,APM32M3514,APM32F407ZET6,APM32F072VBT6,APM32M3514C8U7,APM32E1,APM32,APM32F091CCU6,APM32E103CEU6,APM32F072R8T6,APM32F003F4M6,GW SERIES,APM32F107RCT6,APM32F072CBT6,APM32F407IGT6,APM32F003,APM32A103VET7,APM32F072CBT7,APM32F105RBT6,APM32F407,APM32F405,APM32F091,APW32F103T4T6S,APM32F405VGT6,APM32F035C8T7,GHD,APM32F072,APM32E103CCT6,APM32F103CCT6,APM32F051K8T6,APM32E103VCT6,APM32F051C8T6,APM32F072CBU6,APM32E103ZET6,GHD3125R,APM32F103VCT6,APM32F103ZET6,GEEHY-LINK,AP/GM/W32F103T4T6S,APM32F107VBT6,APM32A407VGT7,APM32A103,APM32F003F6U7,APM32F407RET6,APM32F407VGT6,GW3323,APM32F003F6U6,APM32F417IGT6,APM32F103T8U6,APM32F051K8U6,APM32F051C8U6,APM32F107,APM32F4T1RET6,APM32F105,APM32F105VCT6,APM32F103,APM32F417VGT6,GHD3440R5,APM32F051R6T6,APM32F103RET6,GHD3440R3,APM32F003F4P6,APM32F035K8T7,GURC,APM32F030CCT6,APM32F030C6T6,APM32F103R8T6,GALT,APM32F051,APM32F103CBT7,G32A1465UAT0MLL,APM32F103CBT6,GHD3440QE,G32A1465UAT0MLH,APM32F030K6T6,APM32F030R8T6,APM32F103VBT6,APM32F030K6T7,APM32F072C8T6,APM32F107VCT6,APM32F103T4T6S,APM32A103CBT7,APM32EF1,APM32F411CEU6,GW8811KEU6,GW8811CEU6,APM32F407ZGT6,APM32F072RBT6,APM32F072RBT7,APM32F003F6M6,GHD3440PF,APM32F407IGH6,APM32E103CCU6,GHD1620T,APM32A103RET7,APM32F105VBT6,APM32F030K6U6,GW,APM32E103RET6,APM32F072C8U6,G32A1465,APM32F072V8T6
极海半导体APM32F407系列MCU支持国密算法,助力国产安全可控,适用于新能源等领域
极海推出的APM32F407系列MCU,结合当前环境要求,设计出了支持国密算法(SM2,SM3,SM4)的IP, 符合国家密码管理局认定和公布的密码算法标准及其应用规范,并凭借显著的性能优势,已应用至新能源、工业控制、医疗设备等众多领域。
原厂动态 发布时间 : 2023-01-07
极海车规级MCU凭借可靠的产品品质,斩获“2023汽车芯片50强”与“MCU创新先锋”两项大奖
近日,极海车规级MCU凭借可靠的产品品质、专业周到的客户技术支持服务,以及量产级解决方案良好的市场表现,相继斩获“2023汽车芯片50强”、“MCU创新先锋奖”两项行业大奖。作为国内领先的32位车规级芯片设计企业,极海积极布局以服务汽车智能化、电动化、网联化的快速融合。
原厂动态 发布时间 : 2023-11-30
基于极海半导体APM32F411工业级高适配型MCU的移动电源控制板应用方案
随着技术的发展,消费者对移动电源产品品质和体验提出了更高要求,除了储电量、安全性、便携度等基本要求,更具美观、多功能、人性化等优势的产品才能赢得消费者的青睐。采用极海APM32F411RET6工业级高适配型MCU作为主控的移动电源控制板方案,满足性能、功能、体积等综合设计需求,可帮助客户打造更具性价比和市场竞争力的移动电源产品。
应用方案 发布时间 : 2024-08-14
极海APM32F407IG Tiny Board开发板测评9:利用DAC实现音频输出
【极海APM32F407IG Tiny Board开发板测评】9.利用DAC实现音频输出,开发板上还有USB和网口,可以尝试结合USB做个USB声卡,或者通过USB读取U盘中的WAV文件进行播放,或者利用以太网口通过网络播放,或者还可以用ADC连接MIC实现录音再用DAC播放,这里就不展开了,有兴趣的可以去尝试一下
设计经验 发布时间 : 2023-10-21
【应用】国产极海半导体APM32系列工业级MCU助力推动新型工业化发展
工业级MCU应用场景范围十分广泛,并对使用寿命、温度、湿度、电磁辐射等有着严格的品质要求。极海半导体长期深耕中高端工控市场,本文就以绝对值编码器、高性能伺服驱动器及变频器方案为例,详细介绍极海半导体32位APM32位工业级MCU在工控领域的出色表现。
应用方案 发布时间 : 2022-11-02
极海联亮相2024全球MCU及嵌入式生态发展大会,展出新技术和产品并发表演讲
2024年7月25日,2024全球MCU及嵌入式生态发展大会在深圳君悦酒店举行,由AspenCore主办。极海作为特邀嘉宾在主论坛进行演讲,并展出新技术和产品,包括搭载Arm Cortex M52内核且采用Helium技术的G32R5系列实时控制MCU和针对电机市场的栅极驱动器与APM32M3514系列SoC等新品。
原厂动态 发布时间 : 2024-07-29
【应用】极海MCU APM32F103系列用于人机界面产品,可满足HMI功耗调整、蓝牙通信等多样化需求
HMI人机界面方案采用APM32F103系列作为主控,通过SPI接口连接LCD和NFC模块,通过GPIO口驱动LED灯,通过按键输入控制信号,通过I²C接口与EEPROM通信,外置8M晶振提供时钟信号,使用超低功耗蓝牙4.2 SoC GW8811。
应用方案 发布时间 : 2023-05-17
【应用】国产工业级高性能MCU APM32F407VGT6用于PLC工控板,主频168MHz,通信外设丰富
某客户主要做各种工业自动控制系统装置,其中一款国产PLC工控板主控要更换成国产物料,推荐极海工业级高性能MCU APM32F407系列,主频高达168MHz、通信外设资源丰富,工作温度范围-40℃到+85℃。
应用方案 发布时间 : 2023-03-14
APM32F411xCxE Arm® Cortex®-M4F core-based 32-bit MCU User Manual
型号- APM32,APM32F411XCXE SERIES,APM32F411XCXE
电子商城
现货市场
服务
可定制温度范围-230℃~1150℃、精度可达±0.1°C;支持NTC传感器、PTC传感器、数字式温度传感器、热电堆温度传感器的额定量程和输出/外形尺寸/工作温度范围等参数定制。
提交需求>
可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>
登录 | 立即注册
提交评论