牛卧堂MCU技术交流

标题: N76E003 串口使用115200波特率例程 [打印本页]

作者: jamesliu    时间: 2018-6-27 13:56
标题: N76E003 串口使用115200波特率例程
本帖最后由 jamesliu 于 2018-6-29 10:37 编辑

N76E003如果串口使用115200波特率需要微调HIRC到16.6MHz,使用默认16MHz波特率会有很大的误差。
详见附件例程。
N76E003_UART0.zip (1.65 KB, 下载次数: 1562)

作者: 匿名    时间: 2020-2-24 14:45
請問裡面提到"使能了串口中断就不要用printf", 有沒有解決辦法? 我想用printf, 也需要用uart輸入資料, 謝謝
作者: jamesliu    时间: 2020-3-6 14:28
那就自定义putchar函数
作者: slotg    时间: 2020-7-20 14:39
请问一下,在规格书里修改 HIRC 的方式是直接读取 RCTRIM0,RCTRIM1 修改后再写入,不过在楼主的程序中是使用 IAP 读取数据后修改后再写入 RCTRIM0,RCTRIM1 ,这2种方式有什么不同吗?
作者: 匿名    时间: 2020-7-21 11:26
slotg 发表于 2020-7-20 14:39
请问一下,在规格书里修改 HIRC 的方式是直接读取 RCTRIM0,RCTRIM1 修改后再写入,不过在楼主的程序中是使 ...

寄存器RCTRIM0,RCTRIM1是有时效保护的,设置TA=0XAA;TA=0X55;后可以直接读写的。楼主程序里是先用IAP从flash里读取存储的HIRC修正值,再将修正值设置到寄存器RCTRIM0,RCTRIM1里。
作者: slotg    时间: 2020-7-21 14:01
游客 58.246.86.x 发表于 2020-7-21 11:26
寄存器RCTRIM0,RCTRIM1是有时效保护的,设置TA=0XAA;TA=0X55;后可以直接读写的。楼主程序里是先用IAP从fl ...

RCTRIM0,RCTRIM1 可以直接读取,但是写入的话是有时效访问保护,在官方的N76E003规格书(v1.08)里的处理方式是:
  1.     hircmap0 = RCTRIM0;
  2.     hircmap1 = RCTRIM1;
  3.     trimvalue16bit = ((hircmap0<<1)+(hircmap1&0x01));
复制代码

不过楼主程序的作法是:
  1.     set_IAPEN;
  2.     IAPAL = 0x30;
  3.     IAPAH = 0x00;
  4.     IAPCN = 0x04;
  5.     set_IAPGO;
  6.     hircmap0 = IAPFD;
  7.     IAPAL = 0x31;
  8.     IAPAH = 0x00;
  9.     set_IAPGO;
  10.     hircmap1 = IAPFD;
  11.     clr_IAPEN;
  12.     hircmap1 = hircmap1&0x01;
  13.     trimvalue16bit = ((hircmap0<<1)+(hircmap1&0x01));
复制代码

这2种不晓得有什么区别?

而 IAPCN 的控制码 0x04 应该是读96位UID,但是楼主程序里的地址 0x0030 是什么数据呢?

作者: 匿名    时间: 2020-7-21 17:11
slotg 发表于 2020-7-21 14:01
RCTRIM0,RCTRIM1 可以直接读取,但是写入的话是有时效访问保护,在官方的N76E003规格书(v1.08)里的处理方 ...

30 31位置存储的是16MHZ的校准值。从这里读取出来再微调后存到寄存器RCTRIM0,RCTRIM1比较准。如果用读RCTRIM0,RCTRIM1值来做运算的话,有可能RCTRIM0,RCTRIM1的值已经是被改动过却不知道。
作者: slotg    时间: 2020-7-21 20:56
游客 58.246.86.x 发表于 2020-7-21 17:11
30 31位置存储的是16MHZ的校准值。从这里读取出来再微调后存到寄存器RCTRIM0,RCTRIM1比较准。如果用读RCT ...

谢谢,请问30,31这些IAP地址的功能在那份文件可以查到?
作者: chrishu    时间: 2020-7-22 10:03
没有向客户开放这部分资料
作者: 匿名    时间: 2021-5-14 10:16
把HIRC到16.6MHz是不是UAT0和UAT1都可以115200呀
作者: 匿名    时间: 2023-4-8 15:29
请问UART0使用定时器1可以设置最低波特率是多少?




欢迎光临 牛卧堂MCU技术交流 (http://www.nuvoton-mcu.com/) Powered by Discuz! X3.2