查看: 433|回复: 0

[项目分享] 【N32G031开发板】开箱+ I/O测试

[复制链接]

该用户从未签到

发表于 2023-9-15 13:22:59 | 显示全部楼层 |阅读模式
分享到:




收到了本次比赛国民技术送的N32G031,今天来测一测他的性能,官方做的分布还是比我们自己做的要整洁一点,可能我们做功能把板子做的比较小吧。
2.jpg
3.jpg
硬件规格
N32G031板卡采用了N32G031单片机作为核心处理器,单片机基于ARM Cortex-M0+内核架构,拥有高性能和低功耗的特点。此外,该板卡还具备以下硬件规格:


闪存:板卡内置128KB闪存,可以存储代码和数据。
RAM:板卡配备6KB SRAM,用于临时存储数据。
I/O接口:板卡提供了多个GPIO、UART、I2C、SPI等常用接口,方便与其他设备进行通信和连接。
时钟源:板卡支持内部和外部时钟源,适用于不同的应用场景。
电源管理:板卡具备低功耗的电源管理模块,可实现有效的能源利用。
软件支持
N32G031板卡提供了丰富的软件支持,包括开发工具链和相关库函数。以下是板卡的软件支持方面的亮点:


开发工具:
N32G031板卡支持多种主流的开发工具,如Keil MDK、IAR Embedded Workbench等,为开发者提供了便捷的开发环境。
库函数:板卡的软件库函数涵盖了常见的外设驱动和功能模块,如GPIO控制、UART通信、定时器等,大大简化了开发过程。
示例代码:N32G031板卡附带了丰富的示例代码,展示了不同外设的使用方法,帮助开发者更快上手。


下边简单来测测I/O的一些功能
GPIO测试
通过使用板卡的GPIO接口,我们进行了以下测试:
4.jpg
1、简单输出:将一个GPIO引脚设置为输出模式,并将其电平设置为高电平或低电平。
  1. #include "n32g031.h"

  2. void main() {
  3.     RCC->APB2ENR |= RCC_APB2ENR_IOPBEN; // 使能GPIOB时钟
  4.     GPIOB->MODER &= ~GPIO_MODER_MODE0; // 将PB0设置为输出模式
  5.     GPIOB->ODR |= GPIO_ODR_OD0; // 设置PB0电平为高
  6.     while (1) {
  7.         // 循环保持高电平状态
  8.     }
  9. }
复制代码
2、简单输入:将一个GPIO引脚设置为输入模式,并读取其电平状态。
  1. #include "n32g031.h"

  2. void main() {
  3.     RCC->APB2ENR |= RCC_APB2ENR_IOPBEN; // 使能GPIOB时钟
  4.     GPIOB->MODER &= ~GPIO_MODER_MODE0; // 将PB0设置为输入模式
  5.     while (1) {
  6.         if (GPIOB->IDR & GPIO_IDR_ID0) {
  7.             // PB0为高电平
  8.         } else {
  9.             // PB0为低电平
  10.         }
  11.     }
  12. }
复制代码
3、UART测试
通过使用板卡的UART接口,我们进行了以下测试:
发送数据:使用UART发送数据到计算机串口终端。
  1. #include "n32g031.h"

  2. void UART_SendChar(uint8_t ch) {
  3.     USART1->TDR = ch;
  4.     while (!(USART1->ISR & USART_ISR_TXE));
  5. }

  6. void UART_SendString(const char* str)
复制代码

4、I2C测试
通过使用板卡的I2C接口,我们进行了以下测试:


①主机发送:将板卡设置为I2C主机,并向从设备发送数据。
  1. #include "n32g031.h"

  2. void I2C_Master_Send(uint8_t addr, uint8_t data) {
  3.     I2C1->CR2 = (addr << 1) | I2C_CR2_AUTOEND; // 设定地址和自动停止位
  4.     I2C1->TXDR = data; // 发送数据
  5.     while (!(I2C1->ISR & I2C_ISR_STOPF)); // 等待传输完成
  6. }

  7. void main() {
  8.     RCC->APB1ENR |= RCC_APB1ENR_I2C1EN; // 使能I2C1时钟
  9.     I2C1->CR1 &= ~I2C_CR1_PE; // 关闭I2C1
  10.     I2C1->TIMINGR = 0x00707CBB; // 根据外设要求设置时序参数
  11.     I2C1->OAR1 = 0; // 清空地址寄存器
  12.     I2C1->CR1 |= I2C_CR1_PE; // 开启I2C1

  13.     I2C_Master_Send(0x50, 0xAA); // 向地址为0x50的从设备发送数据0xAA
  14. }
复制代码
②从设备接收:将板卡设置为I2C从设备,并接收来自主机的数据。
  1. #include "n32g031.h"

  2. void I2C_Slave_Receive() {
  3.     uint8_t data = I2C1->RXDR; // 接收主机发送的数据
  4.     // 处理接收到的数据
  5. }

  6. void main() {
  7.     RCC->APB1ENR |= RCC_APB1ENR_I2C1EN; // 使能I2C1时钟
  8.     I2C1->CR1 &= ~I2C_CR1_PE; // 关闭I2C1
  9.     I2C1->TIMINGR = 0x00707CBB; // 根据外设要求设置时序参数
  10.     I2C1->OAR1 = 0xA0; // 设置从设备地址
  11.     I2C1->CR1 |= I2C_CR1_PE; // 开启I2C1

  12.     while (1) {
  13.         if (I2C1->ISR & I2C_ISR_ADDR) { // 检测到地址匹配
  14.             I2C_Slave_Receive(); // 从主机接收数据
  15.         }
  16.     }
  17. }
复制代码
5、SPI测试
通过使用板卡的SPI接口,我们进行了以下测试:


主机发送:将板卡设置为SPI主机,并向外部设备发送数据。
  1. #include "n32g031.h"

  2. void SPI_Master_Send(uint8_t data) {
  3.     SPI1->DR = data; // 发送数据
  4.     while (!(SPI1->SR & SPI_SR_TXE)); // 等待发送完成
  5. }

  6. void main() {
  7.     RCC->APB2ENR |= RCC_APB2ENR_SPI1EN; // 使能SPI1时钟
  8.     SPI1->CR1 = SPI_CR1_MSTR | SPI_CR1_SSM | SPI_CR1_SSI | SPI_CR1_SPE; // 设置为主机模式,使能软件片选,设置软件片选信号
  9.     while (1) {
  10.         SPI_Master_Send(0xAA); // 向外部设备发送数据0xAA
  11.     }
  12. }
复制代码
从设备接收:将板卡设置为SPI从设备,并接收来自主机的数据。
  1. #include "n32g031.h"

  2. uint8_t SPI_Slave_Receive() {
  3.     return SPI1->DR; // 接收主机发送的数据
  4. }

  5. void main() {
  6.     RCC->APB2ENR |= RCC_APB2ENR_SPI1EN; // 使能SPI1时钟
  7.     SPI1->CR1 = SPI_CR1_SPE; // 使能SPI1
  8.     while (1) {
  9.         if (SPI1->SR & SPI_SR_RXNE) { // 检测到接收缓冲区非空
  10.             uint8_t data = SPI_Slave_Receive(); //
复制代码

今天就先分享到这里!


回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条

手机版|小黑屋|与非网

GMT+8, 2024-4-29 13:02 , Processed in 0.108994 second(s), 17 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.