打印
[牛人杂谈]

[新唐003]+1年多的使用感受

[复制链接]
8872|47
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yjgna|  楼主 | 2018-3-27 16:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
17年初就开始接触新唐N76E003这款8051单片机,至今已用这款单片机开发了十几款产品(有10PIN的、14PIN的、20PIN的,电子烟行业,产品小,周期短,你懂的!)

本人使用过的模块/功能有:
GPIO、ADC、SPI、I2C、Timer、UART、PWM、T2输入捕获、BOD、Dataflash、WDG、PowerDown模式.

下面总结下使用体会:

[1] 存储资源足够,18KB Flash, 1KB RAM,其中256字节是内部RAM, 768字节是外部RAM, 外部RAM的访问方式,最好还是在Keil中配置好

[2]以前习惯了使用EEPROM保存数据,新唐003使用DataFlash模式EEPROM,大小由用户设置,更灵活。

[3]ADC采样时,参考电压为VDD,而这个VDD是通过采用内部Bandgap电压 反推出来的,稍微麻烦点。 还有一点,不同批次的芯片Bandgap的采样值会有点偏差。

[4]PWM引脚 调节BUCK-BOOST输出时,烧坏过MOSFET,或者不控制也会震荡输出,后来的解决办法是 先将PWM引脚设置为Input模式,在配置PWM时再设置为PushPull模式。

[5] PWM最大时钟为主频16M,如果占空比从0%~100%调节的话,输出波形最大频率为160KHz,有点低,尤其是对Buck-Boost电路调节时。

[6]产品都是锂电池供电,使用Nulink仿真时,ADC差很多。原因是Nulink PC端USB也给供电,切断仿真器内部PC端5V供电 仿真就正常了。关于这个Keil C51驱动, 再向新唐提点意见, 就不能跟Cortex-M4/M0把版本统一吗, 每次调完NUCXXX换到003时, 提示仿真器固件版本不匹配。

[7] 关闭所有外设后,休眠电流只有5UA。电池供电的优势。

[8]新唐003的固件库,确实存在着一些BUG,调试发现不对时,除了检查自己软件外,可以检查下库。

[9]ICPDA和ICPCK都是可以复用的,接上拉电阻或者下拉电阻都不影响下载,但要注意不要接电容。

[10] 这款003中间出现过启动问题,上电电路要加RC,Startup.A51文件新唐调整过。 带来的影响是MCU上电时间会晚一点点,电路设计时需要考虑上电时序。(当时由于这个问题差点转向其它MCU)

用了一年多,总体上挺满意,新唐的服务还是不错的。在易用性上希望多考虑下 使用者的建议。
沙发
座机呀| | 2018-3-27 19:02 | 只看该作者
nulink版本问题,要重新安装nulink驱动到keil根目录,我的就是这样解决的

使用特权

评论回复
板凳
小S咯| | 2018-3-28 08:11 | 只看该作者
能否分享下T2输入捕获和BOD呢??

使用特权

评论回复
地板
yjgna|  楼主 | 2018-3-28 09:04 | 只看该作者
小S咯 发表于 2018-3-28 08:11
能否分享下T2输入捕获和BOD呢??

BOD:
void BODINT_init(void)
{
  clr_BOF;
  clr_BORF;

  clr_BORST;
  set_BOV1;
  clr_BOV0;

  set_EBOD;
  set_EA;
  set_BODEN;
}

在MCU进入休眠前关闭BOD功能
void BODINT_deinit(void)
{
  clr_BOF;
  clr_BORF;

  clr_BODEN;
}

void BOD_ISR (void) interrupt 8
{
  clr_BOF;
}

使用特权

评论回复
5
yjgna|  楼主 | 2018-3-28 09:07 | 只看该作者
小S咯 发表于 2018-3-28 08:11
能否分享下T2输入捕获和BOD呢??

关于T2输入捕获请参考  红外接收的笔记

红外接收模块调试笔记.pdf

3.25 MB

使用特权

评论回复
6
heisexingqisi| | 2018-3-28 09:40 | 只看该作者
还有勘误表提到的那个休眠的解决方案。。

使用特权

评论回复
7
Kelan| | 2018-3-28 10:03 | 只看该作者
总结得不错~!

“新唐003的固件库,确实存在着一些BUG” --- 楼主已知的Bug,是否可以讲讲,以免后来者“采坑”。。

使用特权

评论回复
8
slotg| | 2018-3-28 10:12 | 只看该作者
不错,感谢分享。

使用特权

评论回复
9
小S咯| | 2018-3-28 10:52 | 只看该作者
yjgna 发表于 2018-3-28 09:07
关于T2输入捕获请参考  红外接收的笔记

谢谢大神

使用特权

评论回复
10
座机呀| | 2018-3-28 12:50 | 只看该作者
别忘记回帖

微信截图_20180328124941.png (45.83 KB )

微信截图_20180328124941.png

使用特权

评论回复
11
yiy| | 2018-3-30 19:38 | 只看该作者
羡慕你们这些人才

使用特权

评论回复
12
IoTCatcher| | 2018-6-26 15:25 | 只看该作者
楼主您好, 可否分享下PowerDown模式的实现?

使用特权

评论回复
13
yjgna|  楼主 | 2018-6-26 15:46 | 只看该作者
IoTCatcher 发表于 2018-6-26 15:25
楼主您好, 可否分享下PowerDown模式的实现?

在进入掉电模式前,将一些不需要供电的外设关闭,将MCU内部的ADC、BOD、WatchDog关闭,打开唤醒中断。
clr_ADCEN;//关闭ADC
clr_BODEN;//关闭BOD
clr_WDTEN;//关闭看门狗
  PICON = 0xC1;        //0b110000 01        PORT1 Bit7|Bit4
  PINEN = 0x80;        //PWR Bit7 falling edge
  PIPEN = 0x10;        //USB_IN  Bit4 Rising edge
  PIF = 0;  
  set_EPI;              // Enable pin interrupt

进入掉电模式
set_PD;

退出掉电模式,关闭唤醒中断,开启WatchDog/ADC/BOD,将关闭的外设重新打开
PIF = 0;
clr_EPI;
set_WDTR;//打开看门狗
set_ADCEN;//打开ADC
set_BODEN;//打开BOD

使用特权

评论回复
14
IoTCatcher| | 2018-6-26 15:58 | 只看该作者
yjgna 发表于 2018-6-26 15:46
在进入掉电模式前,将一些不需要供电的外设关闭,将MCU内部的ADC、BOD、WatchDog关闭,打开唤醒中断。
cl ...

好的, 谢谢您!

使用特权

评论回复
15
643757107| | 2018-6-27 09:31 | 只看该作者
总结的不错,都是良心经验。

使用特权

评论回复
16
liangbaixin| | 2018-6-27 11:45 | 只看该作者
楼主你好,如果我想写flash,是不是应该在BOD中断里写?

使用特权

评论回复
17
yjgna|  楼主 | 2018-6-27 13:13 | 只看该作者
liangbaixin 发表于 2018-6-27 11:45
楼主你好,如果我想写flash,是不是应该在BOD中断里写?

在掉电时 保存数据到Flash,是可以通过BOD中断实现的。
需要更新的数据 存放在XRAM中,页擦除操作事先做好,在BOD中断里,做写Flash操作,把XRAM中暂存的数据写入Flash。
另外还要考虑下VDD掉电 维持时间(从进入BOD到MCU不能工作的时间)

使用特权

评论回复
18
yjgna|  楼主 | 2018-6-27 13:20 | 只看该作者
liangbaixin 发表于 2018-6-27 11:45
楼主你好,如果我想写flash,是不是应该在BOD中断里写?

新唐Cortex-M0 掉电数据保存 参考手册

AN_0013_Storing_The_Data_In_DataFlash_When_Power-_Loss_CHS_Rev1.00.pdf

1.16 MB

使用特权

评论回复
19
liangbaixin| | 2018-6-27 16:03 | 只看该作者
yjgna 发表于 2018-6-27 13:20
新唐Cortex-M0 掉电数据保存 参考手册

BOD这样写,debug时,我把VDD下降到所选的检测电压,无法进入欠压中断,楼主帮看看是否配错了?

void BOD_Init(void)
{               
        clr_BOF;
        clr_BORF;
        clr_BORST;
        set_BOV1;
        clr_BOV0;    //4.4v       
        set_EBOD;                //使能欠压检测
        set_EA;
        set_BODEN;
       
}

使用特权

评论回复
20
yjgna|  楼主 | 2018-6-27 16:22 | 只看该作者
liangbaixin 发表于 2018-6-27 16:03
BOD这样写,debug时,我把VDD下降到所选的检测电压,无法进入欠压中断,楼主帮看看是否配错了?

void BO ...

你的代码配的BOD电压是2.7V 不是4.4V
4.4V的配置是
clr_BOV1;
clr_BOV0;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

92

帖子

3

粉丝