本帖最后由 lisingch 于 2019-3-31 11:28 编辑
时间过的真快,每天各种的忙转眼就到月底了,搭个DIY秀活动的末班车凑个热闹与朋友们交流分享。
ST公司STM32及STM8两大产品线上的产品丰富多彩、琳琅满目。这其中的STM8产品性价比非常高,为了体验STM8L系列微控制器的优异性能特意买了十几片STM8L051F3P6芯片,本来打算打样做个小开发板,芯片到手后因急于测试,结果就利用手头现有的资源制作了这款极精简的STM8L051F3P6开发板。说是开发板其实就是一个最小系统,以此最小系统为核心,再配以其它一些外设模块用来进行测试、学习,感觉还不错。下面将制作过程与大家一同分享。
一、前期准备
1、在官网下载STM8L系列微控制器的相关资料,如数据手册、参考手册以及库文件等(相关资料附后);
2、TSSOP20转接板一块,洞洞板、40PIN锁紧座、排针若干、阻容元件等等;
二、对STM8L051F3P6进行初步了解
根据STM8L051F3P6的数据手册中描述可以看出这款芯片性能不俗,与同样是TSSOP20封装的STM8S103F3P6相比最为突出的就是没有了VCAP引脚,而且低功耗性能更是超越了STM8S103F3P6。下面是手册中的截图,引脚图中红色字是为了方便使用而自己添加的;
三、硬件制作
1、STM8L051F3P6最小系统,将STM8L051F3P6芯片直接焊在TSSOP20转接板上,转接板两侧焊孔采用了16mm长脚排针;
2、在PIN7(VSS)及PIN8(VDD)间直接焊了一只0805的100n电容用于电源去耦;
3、用洞洞板及插座制作一个最小系统板扩展基板,方便引脚引出;10PIN排针为5*VSS + 5*VDD;
4、至此STM8L051F3P6开发板已初具模样,比划一下感觉还少点啥?应该至少再有个电源指示灯吧,那就再加个指示灯。手上正好有些大块头的三色LED也利用一下,于是又做了个LED板,既可以利用其中的一色(红)做电源指示,当然也可以做为普通LED使用;另外两色(绿、蓝)还能做点灯、PWM调光等实验。三色LED的每一色点亮电流是不同的,实测后加了不同的限流电阻,每一色的电流均调整至1.8~2mA左右,使用中感觉还不错。
5、在后期的测试过程中发现手动复位还是很有必要,于是又增加了手动复位电路。另外,PIN7、PIN8间焊接的0805退耦电容与转接板上铜箔短路了,于是将此电容移到了转接板背面;
6、最终开发板完成后的合照,感觉挺漂亮;
四、实验测试
习惯了IAR来编译STM8,电脑之前已经安装了。下面就采用库方式编写几个小程序做个简单测试:
1、测试环境介绍
a、IAR for STM8 V3.10.1;
b、STM8CubeMX V1.3.0;
c、STM8L15x_StdPeriph_Driver V1.6.1;
d、本次制件精简开发板;
2、IO实验。这个简单,就是让LED按一定的时间间隔进行闪烁:
a、系统配置使用STM8CubeMX,虽说这个软件还不能产生代码,但对于各种外设及时钟配置还是非常直观的,通过软件配置再结合库代码相当省时省心,效率提高不少;
b、主要代码(完整工程附后);
#define LED_PORT GPIOC
#define RED_LED GPIO_Pin_4
#define BLUE_LED GPIO_Pin_6
#define GREEN_LED GPIO_Pin_5
#define RED_LED_ON GPIO_ResetBits(LED_PORT, RED_LED);
#define RED_LED_OFF GPIO_SetBits(LED_PORT, RED_LED);
#define BLUE_LED_ON GPIO_ResetBits(LED_PORT, BLUE_LED);
#define BLUE_LED_OFF GPIO_SetBits(LED_PORT, BLUE_LED);
#define GREEN_LED_ON GPIO_ResetBits(LED_PORT, GREEN_LED);
#define GREEN_LED_OFF GPIO_SetBits(LED_PORT, GREEN_LED);
void delay_us(uint16_t nCount)
{
nCount *= 3;
while(--nCount);
}
void delay_ms(uint16_t nCount)
{
while(nCount--)
{
delay_us(1000);
}
}
void CLK_Config(void)
{
CLK_DeInit();
CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI);
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
CLK_HSICmd(ENABLE);
}
void GPIO_Config(void)
{
GPIO_DeInit(LED_PORT);
GPIO_Init(LED_PORT, RED_LED|BLUE_LED|GREEN_LED, GPIO_Mode_Out_PP_High_Fast);
}
/**
* [url=home.php?mod=space&uid=247401]@brief[/url] Main program.
* @param None
* @retval None
*/
void main(void)
{
/* Infinite loop */
CLK_Config();
GPIO_Config();
while (1)
{
RED_LED_ON;
delay_ms(500);
RED_LED_OFF;
delay_ms(500);
BLUE_LED_ON;
delay_ms(500);
BLUE_LED_OFF;
delay_ms(500);
GREEN_LED_ON;
delay_ms(500);
GREEN_LED_OFF;
delay_ms(500);
}
}
c、硬件连接及测试结果
e、测试效果视频文件(不会传视频文件,上个压缩包只有7秒的视频,有兴趣您可以看看。)
三色LED.rar
(920.96 KB)
五、总结
通过这次制作及测试感觉这种方法还不错,整套开发板成本不足10元钱非常经济。期间制作过不少的模块,包括DS18B20、AMS2302、DHT11、LM35A、TMP275、AT24Cxx、4位数码管、OLED、MMA7455等各种小模块,这些小玩意儿设备精简、成本较低、资源可以重复利用,同时还选购一些成品模块。充分利用这些模块与本次制作的精简开发板相结合,无论是对于学习还是产品应用开发都是非常方便和经济的。
利用库开发非常方便,库里的每个函数都有使用说明和样例,直接套用就行了,遇到问题再结合数据手册、参考手册进行对比分析,过程中基本上不用太关心底层,当然数据手册、参考手册还是要熟读的,做到知其然知其所以然。希望与各位朋友交流,文中错误在所难免也请朋友们指教!
六、附件
STM8L051F3数据手册、参考手册RM0031、库_STM8L15x-16x-05x-AL31-L_StdPeriph_Lib1.6.1,还有本次测试所用的工程文件,需要的朋友可以看看。
STM8L051F3.pdf
(1.96 MB)
RM0031 STM8L05x STM8L15x STM8L162.pdf
(9.05 MB)
_STM8L15x-16x-05x-AL31-L_StdPeriph_Lib1.6.1.zip
(15.26 MB)
3LED.rar
(984.48 KB)
|
@dirtwillfly :谢谢领导表扬!
这套模块做的不错