- 2025-02-08
-
回复了主题帖:
读书入围名单:《Python编程:从入门到实践(第3版)》
个人信息无误,确认可以完成阅读分享计划
-
回复了主题帖:
【新年花灯】基于点阵显示板的灵蛇献瑞
秦天qintian0303 发表于 2025-2-7 17:26
又是一种新年花灯,大家手里真是各种存货啊
嗯,该去继续积累了。
- 2025-02-07
-
发表了主题帖:
【新年花灯】基于点阵显示板的灵蛇献瑞
本帖最后由 Lily李 于 2025-2-8 12:57 编辑
新年点灯咱是认真的,论数量它可是16*16*4个,论移动它是整体搬迁呀!
[localvideo]c2245b76b97484a47d5523325b47f188[/localvideo]
-
回复了主题帖:
【N32A455 车规MCU开发板测评】以串口发送数据
Jacktang 发表于 2025-2-7 07:50
直接使用调试用串口是比较方便
的确是这样
- 2025-02-06
-
发表了主题帖:
【N32A455 车规MCU开发板测评】以串口发送数据
在通常的情况下,对采集的数据需上传到上位机以供处理。
为了测试的方便,直接使用调试用串口,见图1所示。
图1 调试口
在使用时,需短接J2的引脚7和引脚8相连,引脚9和引脚10相连。
对串口1的配置函数为:
void USART1_Config(void)
{
GPIO_InitType GPIO_InitStructure;
USART_InitType USART_InitStructure;
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_USART1 | RCC_APB2_PERIPH_GPIOA, ENABLE);
/* USART1 GPIO config */
/* Configure USART1 Tx (PA.09) as alternate function push-pull */
GPIO_InitStructure.Pin = GPIO_PIN_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);
/* Configure USART1 Rx (PA.10) as input floating */
GPIO_InitStructure.Pin = GPIO_PIN_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);
/* USART1 work mode*/
USART_InitStructure.BaudRate = 115200;
USART_InitStructure.WordLength = USART_WL_8B;
USART_InitStructure.StopBits = USART_STPB_1;
USART_InitStructure.Parity = USART_PE_NO ;
USART_InitStructure.HardwareFlowControl = USART_HFCTRL_NONE;
USART_InitStructure.Mode = USART_MODE_RX | USART_MODE_TX;
USART_Init(USART1, &USART_InitStructure);
USART_Enable(USART1, ENABLE);
}
为支持打印输出功能所配置的函数为:
int fputc(int ch, FILE* f)
{
USART_SendData(USART1, (uint8_t)ch);
while (USART_GetFlagStatus(USART1, USART_FLAG_TXDE) == RESET) ;
return (ch);
}
在显示功能的基础上,实现数据采集与发送功能的主程序为:
int main(void)
{
uint16_t V;
LCD_config();
RCC_Configuration();
GPIO_Configuration();
ADC_Initial(ADC1);
LCD_LED_High();
TFT_Init();
LCD_Clear(WHITE);
BACK_COLOR=WHITE;
POINT_COLOR=RED;
LCD_ShowString(30,30,"Channel_06:");
LCD_ShowString(30,60,"Channel_06: mV");
USART1_Config();
while (1)
{
ADC1ConvertedValue[0]=ADC_GetData(ADC1,ADC1_Channel_06_PC0);
V=ADC1ConvertedValue[0];
LCD_ShowNum(126,30,V,4);
V=V*3300/4096;
LCD_ShowNum(126,60,V,4);
printf("\r\n Temperature = %d mV \r\n",V);
Delay(0X8FFFFF);
}
}
经程序的编译与下载,其串口发送功能的测试效果如图2所示。
图2 测试效果
- 2025-02-05
-
回复了主题帖:
【N32A455 车规MCU开发板测评】点亮LCD屏
emma2015 发表于 2025-2-5 10:52
为了增强十足的灵活性,就以GPIO口模拟的方式来实现。
是呀,GPIO口随处是。
-
回复了主题帖:
【新年花灯】基于WS2812的彩蛇献祥瑞
majip 发表于 2025-2-4 20:58
不错,学习了,有时间也做一个玩玩,公司同事有做一个光带,感觉很有趣
的确比较好玩,一般长一点的效果好些。
-
回复了主题帖:
【N32A455 车规MCU开发板测评】RTC电子时钟的实现
emma2015 发表于 2025-2-4 16:34
博主很用心,每个步骤都很详细,学到了很多东西,感谢你的分享
多谢支持,这是继续进行的动力。
- 2025-02-04
-
回复了主题帖:
【N32A455 车规MCU开发板测评】RTC电子时钟的实现
xinlian55 发表于 2025-2-3 22:00
博主很用心,每个步骤都很详细,学到了很多东西,感谢你的分享
多谢你的支持和鼓励,后面会进行努力。
- 2025-02-03
-
发表了主题帖:
【N32A455 车规MCU开发板测评】RTC电子时钟的实现
在N32A455片内配有RTC计时器,可以轻松实现电子时钟功能。通过与LCD屏相配合就可观察到计时效果。
此外,由于板载了电池座,见图1所示,它可在开发板断电的情况下,依然可以维持RTC计时。
图1 后备电池
为进行时间值的显示,配置了相应的数据显示函数,其内容为:
void OLED_ShowNum(uint8_t x,uint8_t y,uint32_t num,uint8_t len)
{
uint8_t t,temp;
uint8_t enshow=0;
for(t=0;t<len;t++)
{
temp=(num/oled_pow(10,len-t-1))%10;
if(enshow==0&&t<(len-1))
{
if(temp==0)
{
LCD_set_XY(x+8*t,y);
LCD_write_char(' ');
continue;
}
else
{
enshow=1;
}
}
LCD_set_XY(x+8*t,y);
LCD_write_char(temp+'0');
}
}
显示时间值的函数为:
void RTC_TimeShow(void)
{
RTC_GetTime(RTC_FORMAT_BIN, &RTC_TimeStructure);
(void)RTC->DATE;
OLED_ShowNum(16,4,RTC_TimeStructure.Hours,2);
OLED_ShowNum(40,4,RTC_TimeStructure.Minutes,2);
OLED_ShowNum(64,4,RTC_TimeStructure.Seconds,2);
}
在中断处理中显示日期与时间的函数为:
void EXTI9_5_IRQHandler(void)
{
if (EXTI_GetITStatus(EXTI_LINE7) != RESET)
{
RTC_DateShow();
RTC_TimeShow();
EXTI_ClrITPendBit(EXTI_LINE7);
}
}
测试电子时钟功能的主程序为:
int main(void)
{
lCD_config();
LCD_init();
LCD_clear();
LCD_write_english_string(16,0,"N32A455");
LCD_write_english_string(16,2,"NOKIA_5110");
LCD_write_english_string(16,4," : :");
log_init();
log_info("RTC Init");
RTC_DateAndTimeDefaultVale();
RCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH_PWR | RCC_APB1_PERIPH_BKP, ENABLE);
PWR_BackupAccessEnable(ENABLE);
if (USER_WRITE_BKP_DAT1_DATA != BKP_ReadBkpData(BKP_DAT1) )
{
if(SUCCESS==RTC_CLKSourceConfig(RTC_CLK_SRC_TYPE_LSE, true, false))
{
RTC_PrescalerConfig();
log_info("\r\n RTC configured....");
RTC_DateRegulate();
RTC_TimeRegulate();
BKP_WriteBkpData(BKP_DAT1, USER_WRITE_BKP_DAT1_DATA);
//log_info("\r\n RTC Init Success\r\n");
}
else
{
//log_info("\r\n RTC Init Faile\r\n");
}
}
EXTI_PA7_Configuration();
EXTI_ClrITPendBit(EXTI_LINE7);
RTC_ConfigCalibOutput(RTC_CALIB_OUTPUT_1HZ);
RTC_ConfigOutputType(RTC_OUTPUT_PUSHPULL);
RTC_EnableCalibOutput(ENABLE);
while (1);
}
经程序的编译与下载,其显示效果如图2和图3所示,说明显示正常。
图2 显示效果1
图3 显示效果2
-
回复了主题帖:
【N32A455 车规MCU开发板测评】点亮LCD屏
Jacktang 发表于 2025-2-3 10:07
是的配个显示器件就比较完美啦
感谢您的支持和鼓励!
- 2025-02-02
-
发表了主题帖:
【新年花灯】基于WS2812的彩蛇献祥瑞
[localvideo]6b6d05253cb86835d50956a874c06445[/localvideo]
时光似流水
[localvideo]8ebaed97f1b24be88967e250bd868cd7[/localvideo]
彩蛇献祥瑞
-
发表了主题帖:
【N32A455 车规MCU开发板测评】点亮LCD屏
尽管N32A455开发板配了相应的外设资源,但是没有显示器件还是稍感不足,那就自己动手给它配上一个能显示文字信息的LCD屏吧。
为了增强十足的灵活性,就以GPIO口模拟的方式来实现。
由于该开发板没有设置Arduino接口,那就以显示屏的引脚顺序来分配GPIO引脚,见图1所示。
图1 所用接口
具体的连接关系为:
SCLK----PE2
SDIN----PE3
RST ----PE4
DC ----PE5
CS ----PE6
BLK----PC13
输出高低电平的语句定义为:
#define LCD_SCLK_Set GPIOE->PBSC = GPIO_PIN_2
#define LCD_SCLK_Clr GPIOE->PBC = GPIO_PIN_2
#define LCD_SDIN_Set GPIOE->PBSC = GPIO_PIN_3
#define LCD_SDIN_Clr GPIOE->PBC = GPIO_PIN_3
#define LCD_RST_Set GPIOE->PBSC = GPIO_PIN_4
#define LCD_RST_Clr GPIOE->PBC = GPIO_PIN_4
#define LCD_DC_Set GPIOE->PBSC = GPIO_PIN_5
#define LCD_DC_Clr GPIOE->PBC = GPIO_PIN_5
#define LCD_CS_Set GPIOE->PBSC = GPIO_PIN_6
#define LCD_CS_Clr GPIOE->PBC = GPIO_PIN_6
#define LCD_BLK_Set GPIOC->PBSC = GPIO_PIN_13
#define LCD_BLK_Clr GPIOC->PBC = GPIO_PIN_13
进行短时延时的函数为:
void Delay(uint32_t count)
{
for (; count > 0; count--);
}
模拟SPI方式发送字节数据的函数为:
static void LCD_write_byte(unsigned char dat, unsigned char command)
{
unsigned char i;
LCD_CS_Clr;
if (command == 0)
LCD_DC_Clr;
else
LCD_DC_Set;
for(i=0;i<8;i++)
{
if(dat&0x80)
LCD_SDIN_Set;
else
LCD_SDIN_Clr;
LCD_SCLK_Clr;
dat<<=1;
LCD_SCLK_Set;
}
LCD_CS_Set;
}
对所用引脚的配置函数为:
void lCD_config(void)
{
GPIO_InitType GPIO_InitStructure;
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOE, ENABLE);
GPIO_InitStructure.Pin=GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitPeripheral(GPIOE, &GPIO_InitStructure);
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOC, ENABLE);
GPIO_InitStructure.Pin = GPIO_PIN_13;
GPIO_InitPeripheral(GPIOC, &GPIO_InitStructure);
}
该显示屏的初始化函数为:
static void LCD_init(void)
{
LCD_RST_Clr;
Delay(1);
LCD_RST_Set;
LCD_CS_Clr;
Delay(1);
LCD_CS_Set;
Delay(1);
LCD_write_byte(0x21, 0);
LCD_write_byte(0xc8, 0);
LCD_write_byte(0x06, 0);
LCD_write_byte(0x13, 0);
LCD_write_byte(0x20, 0);
LCD_clear();
LCD_write_byte(0x0c, 0);
LCD_CS_Clr;
LCD_BLK_Set;
}
该显示屏的清屏函数为:
static void LCD_clear(void)
{
unsigned int i;
LCD_write_byte(0x0c, 0);
LCD_write_byte(0x80, 0);
for (i=0; i<504; i++)
LCD_write_byte(0, 1);
}
实现字符串显示的函数为:
static void LCD_write_english_string(unsigned char X,unsigned char Y,char *s)
{
LCD_set_XY(X,Y);
while (*s)
{
LCD_write_char(*s);
s++;
}
}
实现显示测试的主程序为:
int main(void)
{
lCD_config();
LCD_init();
LCD_clear();
LCD_write_english_string(16,0,"N32A455");
LCD_write_english_string(16,2,"NOKIA_5110");
LCD_write_english_string(16,4,"2025-1-22");
while (1);
}
经程序的编译与下载,其显示效果如图2所示,说明显示正常。
图2 显示效果
- 2025-01-23
-
发表了主题帖:
【N32A455 车规MCU开发板测评】板子的体检
感谢在这次“年终回炉:FPGA、AI、高性能MCU、书籍等65个测品邀你来~”的活动中得到了这次良好的机会,作为一枚新手这是我步入一个新的学习大门。
我申请到的是N32A455 车规MCU开发板,见图1所示。随其一起配备的还有一条蓝色的USB数据线,贴心!
图1 开发板
图2 USB数据线
毕竟小板子一路风尘,快递小哥也忙,还是先为它做个体检为好,上电后,其效果如图3所示,只有电源指示灯D11被点亮,其电路如图4所示。
图3 上电效果
图4 电源指示灯电路
此外,在观察设备管理器时会发现有虚拟串口的串行,经测试该串口并无如何内容输出,见图5所示。
图5 串口测试
用于为开发板配置的开发与测试的资源很充分,因此在搭建开发环境时十分轻松,完全不用去东寻西找。
为了测试开发环境和程序的下载功能。
先打算测一下点灯程序,但看过程序后发现比较凌乱,就自己写了一个,其内容为:
int main(void)
{
// LED1---red
// LED2---green
// LED3---blue
LedInit(PORT_GROUP2,LED1_PIN);
LedInit(PORT_GROUP2,LED2_PIN);
LedInit(PORT_GROUP1, GPIO_PIN_10);
LedOn(PORT_GROUP2, LED1_PIN);
LedOn(PORT_GROUP2 LED2_PIN);
LedOn(PORT_GROUP1, GPIO_PIN_10);
while (1);
}
经程序的编译与下载,3个LED灯均可点亮,说明情况正常。
接下来是测试Printf打印输出功能,其测试程序为:
int main(void)
{
RCC_Configuration();
GPIO_Configuration();
USART_InitStructure.BaudRate = 115200;
USART_InitStructure.WordLength = USART_WL_8B;
USART_InitStructure.StopBits = USART_STPB_1;
USART_InitStructure.Parity = USART_PE_NO;
USART_InitStructure.HardwareFlowControl = USART_HFCTRL_NONE;
USART_InitStructure.Mode = USART_MODE_RX | USART_MODE_TX;
USART_Init(USARTx, &USART_InitStructure);
USART_Enable(USARTx, ENABLE);
printf("\n\rUSART Printf Example: retarget the C library printf function to the USART\n\r");
while (1)
{
}
}
经程序的编译与下载,在短接J2的引脚7和引脚8的情况下,其测试结果如图7所示,说明正常。
图6 引脚连接
图7 测试结果
至此,基本的测试就可以告一段落了,体检情况基本正常。
- 2025-01-19
-
回复了主题帖:
【测评入围名单(最后1批)】年终回炉:FPGA、AI、高性能MCU、书籍等65个测品邀你来~
个人信息无误,确认可以完成测评计划