PY32F002BW15U7TR(二)
只用iic?低本芯片普冉U7了解下!
国产普冉PY32F002BW15U7TR芯片,我们在前一篇已经做好了他的开发板,为了方便测验,我们做的很大,实际上可以做的非常小,因为实际电路图没多少构成,这个芯片本身具备廉价低本的特质。
这个开发板,我们设置了五个调试引脚。因此我们用DAP下载调试器配合KEIL烧录代码。
从普冉公司官网上下载所需要的资料和环境。在例程的帮助下,尽快入手。这款芯片不同系列在官网例程中所需功能引脚对应相同。
1.了解开发板
1.1 图片
这是从嘉立创上免费打的板子,用了沉金工艺(需要考试通过,领取每月沉金PCB免费打板劵)

焊接物料后:

这是我做出的比较成功的简易PCB:

功能模块:

DAP-link固件可以提供3.3V供电,LED1红灯亮起代表接通电源。
1.2引脚功能实现(IIC)
要想知道引脚复用了什么功能,一定要看说明,学会看数据手册十分重要。国产芯片一般有完善的中英文手册,方便工程师查阅。
1.2.1 IIC说明

1.2.2 引脚定义

PB3 SCL PB6 SDA

PA2 主功能SWCLK --- SCL PB3--SCL
由此可得,IIC的数据线必定是PB6引脚了,时钟线有PB3和PA2。当然他的主功能还是SWD仿真引脚,负责下载调试。
强烈注意:不建议占用SWD引脚,会导致芯片死锁概率直线上升,遇到这种情况,请用模拟I2C.
PB6 主功能SWDIO--- SDA

因为引脚位置关系,方便传输数据和接线,我们使用PB6和PA2.

提示:占用SWDpin,强行使用的话,要在初始化之前作延时,一般3秒最好。或者在IIC使用完毕,程序单次运行的情况下可以在后面重新复位SWD。但还是不建议,后期很不稳定,最好的结果是芯片永久死锁。
PA1 PA4 PA5可做LED灯,初始化高电平,通用推挽输出,不接上下拉。
2.环境搭建
2.1资料获取渠道
已经下载好官方的软件和例程库文件。关于普冉芯片的所有资料网上很少公开,我们所能获取的渠道只有官方的手册例程和HAL库资料,全部下载,都是有用的。

如果你是对方公司的客户,你还可以与客服经理沟通,一些疑问的点可以得到解答。因为即使是资料也有涵盖不到的地方。
总之,感兴趣可以找渠道买下这款U7芯片,开发他很有惊喜!

此文档用于描述 PY32_DFP 器件支持包的安装以及使用,此器件支持包适用于 Keil MDK 集
成开发环境,安装此器件包前需要先安装 Keil MDK 工具。
此器件支持包配合 Keil MDK 软件以及仿真器 PY-LINK,可以实现对 PY32 系列 MCU 的开发
与调试。支持新建工程、编译、下载、仿真调试四大功能。
2.2搭建环境
官方提供的编译软件不止有keil,还有IAR,这里我们统统用keil开发。
首先在电脑上安装PY32f002b的支持包,这是新的芯片,需要专门的支持包。

点击安装即可,目前官网上的支持包对PY32f002b系列芯片应该是统统支持的。

直接next.->finsh.
3.建立工程
普冉单片机的开发需要多个文件和文件夹。因此我们要建立工程,明确工程存储路径,做好相关命名工作。
3.1建立工程文件
创建一个工程文件夹protect_01,所有的项目文件夹都放在这里面。

为了减少编译错误,我们的文件路径都用英文表示。
3.1.1建立文件框架
根据自己的习惯,分文别类。

3.1.2放文件
Drivers里面放inc src两个文件,inc放.h文件,src放.c文件。
还是找官方文件。这在嵌入式单片机开发领域非常常见,我们上手的陌生芯片远比我们认识的要多得多,遇到难题就去找官方,官方才是一手资料获取地,任何方案和教程都是从官方源文件发展起来的。
复制hal库文件到我们的工程中去。

然后是启动文件。我们去找模板。

一般与工程文件在一起,我们把它放Startup文件夹
还要找到一个文件,同样放到startup里面。


在user文件中创建INC和src文件夹。
将其余的main.c msp.c it.c放到src文件夹里面。

之后就是建立工程文件和编写一些驱动。
3.2 建立工程,加载文件
打开keil软件,新建工程。取名protect_01.

添加内核文件和启动文件

将.c文件加入进去。


hal库文件请注意,有时候我们需要用到什么就加什么,因为这个芯片的flash很小,我们后面需要视情况排除一些hal库文件。
3.3 相关参数设置

我们第一步就已经配好pack了。





使用的烧录设备是野火小智出品DAP下载器



我们的芯片会显示出信息来,证明设备连接没错。
如此我们的参数配置已经完成了。

4.DAP下载使用
4.1产品外观


4.2相关配置


证明下载器没有问题

连接器上两个灯常亮。我们针对SWD引脚一个个接入。


5.烧写例程--点灯
之后我们可以烧写官方给的例程库函数了,嵌入式开发的第一个程序,必是点灯无疑了。
库函数中的电灯仅仅只是点灯,我们玩点花活,流水灯!
#include "main.h"
/* Private define ------------------------------------------------------------*/
#define LED1 GPIO_PIN_1
#define LED_GPIO_PORT LED3_GPIO_PORT
#define LED_GPIO_CLK_ENABLE() LED3_GPIO_CLK_ENABLE()
#define LED2 GPIO_PIN_4
#define LED3 GPIO_PIN_5
static void APP_GpioConfig(void);
int main(void)
{
/* Reset of all peripherals, Initializes the Systick. */
HAL_Init();
/* Initialize GPIO */
APP_GpioConfig();
while (1)
{
HAL_GPIO_WritePin(GPIOA, LED1, GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOA, LED1, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA, LED2, GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOA, LED2, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA, LED3, GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOA, LED3, GPIO_PIN_SET);
}
}
/**
* @brief GPIO configuration.
* @param None
* @retval None
*/
static void APP_GpioConfig(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
LED_GPIO_CLK_ENABLE(); /* Enable GPIOA clock */
GPIO_InitStruct.Pin = LED1|LED2|LED3;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; /* Push-pull output */
GPIO_InitStruct.Pull = GPIO_NOPULL; /* Enable pull-up */
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; /* GPIO speed */
/* GPIO initialization */
HAL_GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct);
HAL_GPIO_WritePin(LED_GPIO_PORT, LED1, GPIO_PIN_SET);
HAL_GPIO_WritePin(LED_GPIO_PORT, LED2, GPIO_PIN_SET);
HAL_GPIO_WritePin(LED_GPIO_PORT, LED3, GPIO_PIN_SET);
}
/**
* @brief Error executing function.
* @param None
* @retval None
*/
void APP_ErrorHandler(void)
{
while (1)
{
}
}
#ifdef USE_FULL_ASSERT
void assert_failed(uint8_t *file, uint32_t line)
{
/* Users can add their own printing information as needed,
for example: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
/* Infinite loop */
while (1)
{
}
}
#endif /* USE_FULL_ASSERT */
官方有给hal库,会初始化配置的朋友们,直接上手即可。
6.资料分享
更多推荐



所有评论(0)