本帖最后由 芯圣电子官方QQ 于 2023-7-20 13:03 编辑
HC89S003F4测试心得(一) : 看看HC89S003和市面上的003的异同
首先,感谢21ic 感谢芯圣提供的这次机会. 一直在用新唐的N76E003进行一些对体积和引脚都有些限制的产品进行应用. 并没用过st的 8s003.因为对stm8的内核不熟悉, 一直使用的是新唐的M0内核.后来新唐出了个76E003 ,感觉很不错. 1元多的价格.丰富的资源. 后来才听说是pin2pin 和stm8s003 对位的.
两者的大致对比如下:(借用论坛的帖子)
N76E003 | STM8S003F3
| 内核 | 8051 (1T) | ST自有,哈佛架构,3-stage pipeline | 工作电压 | 2.4~5.5V | 2.95~5.5V | 主频 | 16M Hz(1T) | 16M Hz | APROM Flash(Byte) | 18K | 8K 100次烧写 | SRAM | 1k | 1k | DATA Flash/EEPROM | 0~18k(与aprom共享) | EEPROM 128Byte 100K次 | 时钟源 | 3种,Oscillator,HIRC,LIRC | 3种,Crystal,HIRC,LIRC | 外部高速晶振 | 必须有源时钟源(Oscillator) | 1-16 MHz | 外部低速晶振 | | | 内部高速时钟 | 16 MHz ±1% @ 25℃
16 MHz ±2% @ -40~105℃ | 16 MHz ±5% @ -40~85℃ | 内部低速时钟 | 10 kHz(±50%) | 128 kHz | 定时器 | 3*16-bit + 1*16-bit(for PWM) | 2*16-bit, 1*8-bit | GPIO | 17+1 输入口(复位脚),最多同时1端口8路IO口中断. | 16,16路硬件IO中断 | PWM | 6Chs*16bit : 一个16bit的定时器用于频率设置,每个通道都可以单独设置占空比 | 3 CHs | ADC | 8Ch, 12-bit, 400 ksps, 单个模式, 带隙电压需校准* | 5Ch, 10-bit, 428 kHz/14 clocks,
单个/连续模式 | 比较器 | | | CRC | | | UART | 2 Uart | 1Uart 1Mbps, 兼容SC,IrDA,LIN | SPI | 8 Mbit/s | 8 Mbit/s | I2C | 400Kbit/s | 400Kbit/s | 掉电模式电流 | 〈 5 uA | 6 uA | 唤醒时间 | 30us | 54us | EFT(电快速瞬变脉冲群) | 4.4KV | | ESD(静电释放) | ESD: HBM/8KV, MM/400V | ESD:HBM/4KV,CDM/1KV | ICE调试接口 | 两线+nReset | 一线 | 封装 | TSSOP20/QFN20 | TSSOP20/UFQFN20(3*3) |
对比,在伯仲之间,各有擅长,总的来说新唐003 ,抗干扰更强,价格ok, 串口多 ,flash大, 还有个比较喜欢的就是51内核. 所以个人也比较倾向于用51内核.简单.易用,稳定,强大. 那么在2017年底, 新唐003也开始有所热捧的基础上,我们迎来了HC89S003, 称得上是国产MCU的盛宴中,一个耀眼新品. 简单看,是一款不错的, 多一个选择,长远看,是吹响国产MCU的进攻崛起的号角.
于是,本文的目地也在于此, 比一比和新唐003,对比, 有那些特点. 官方有详细的替代stm8s003的说明,
再经过学习对比看到了
再继续对比电气特性: HC89S003和新唐003 一样,充分发挥了2.0-5.5V的宽范围优势,
休眠也达到标准的:7uA
工作温度比新唐003略低,85度和st持平;
ESD:4KV
EFT:达到主流水准: 4000V
由此,我们可以看出HC89S003满足了我们期待st,替代新唐的要求,51内核,方便的bsp代码
相信后续我移植新唐003程序过来的时候,应该比较容易,而且,还支持了客户对外部晶振的需求.最厉害的,引脚支持全映射.还有5个定时器,强于新唐003.11+2的12bitadc. 还有个惊喜,内部HIRC居然是32MHZ的
从官网下载基于就寄存器操作的.
HC89S003F4 Register Example V1.0.1.0.rar
(1.94 MB)
确实是用心的国产MCU,文档是中文的,标签做的很美好.而且很多例程文件夹也是中文的.
体验了一个GPIO文件下的端口设置例程:
#define ALLOCATE_EXTERN
#include "HC89S003F4.h"
/***************************************************************************************
* @实现效果 设置各个IO口的工作状态
***************************************************************************************/
int main()
{
/************************************系统初始化****************************************/
WDTCCR = 0x00; //关闭看门狗
while((CLKCON&0x20)!=0x20); //等待内部高频RC起振
CLKSWR = 0x51; //选择内部高频时钟为主时钟,内部高频RC2分频,Fosc=16MHz
while((CLKSWR&0xC0)!=0x40); //等待内部高频切换完成
CLKDIV = 0x01; //Fosc1分频得到Fcpu,Fcpu=16MHz
/***********************************设置IO口模式***************************************/
P0M1 = P0M1&0xF0|0x00; //P02设置为输入(无SMT)
P0M0 = P0M0&0x0F|0x10; //P01设置为带下拉输入(无SMT)
P0M0 = P0M0&0xF0|0x02; //P00设置为带上拉输入(无SMT)
P1M0 = P1M0&0x0F|0x30; //P11设置为带模拟输入
P2M0 = P2M0&0xF0|0x04; //P20设置为输入(SMT)
P0M2 = P0M2&0x0F|0x50; //P05设置为带下拉输入(SMT)
P0M2 = P0M2&0xF0|0x06; //P04设置为带上拉输入(SMT)
P0M3 = P0M3&0x0F|0x80; //P07设置为推挽输出
P0M3 = P0M3&0xF0|0x09; //P06设置为开漏输出
P2M1 = P2M1&0xF0|0x0A; //P22设置为带上拉开漏输出
while(1);
return 0;
}
下载,调试,运行, 调试器很棒,运行很流畅,一次性,仿真成功, 板载的led顺利点亮;
|
共2人点赞
|