牛卧堂MCU技术交流

标题: 欢迎小牛们技术咨询,随时留言给我 [打印本页]

作者: dwxyo    时间: 2014-1-6 13:41
标题: 欢迎小牛们技术咨询,随时留言给我
M05x系列NUC1xx系列等都可咨询

大家不要所有提问 回答都在一个帖子里面,
都混在一起,每次进来 都找不到自己的问题与答案。
谢谢~~



作者: rejoice818    时间: 2014-1-6 19:58
好吧,开个头
1、外部FPGA产生12MHZ晶振频率,能否取代M0的外部晶振?

2、使用NuTiny-SDK-NUC123开发板/NUC核心板测试

S=15*H*A*A*A-75*H*A*A*A*A+16*H*A*A*A*A*A
S,H,A 均为32位浮点数  希望能在0.1(或0.2)ms内完成运算吗?
作者: dwxyo    时间: 2014-1-7 10:11
rejoice818 发表于 2014-1-6 19:58
好吧,开个头
1、外部FPGA产生12MHZ晶振频率,能否取代M0的外部晶振?

FPGA产生的12MH频率只要电压满足M0的晶体输入要求就完全可以取代M0的有源晶体,建议用有源晶体

0.1(0.2)MS内能不能完成得看你怎么编写这个程序,M0内部有硬件乘法器可供你使用
如果你需要做大量的数学运算,建议用NUC4xx,NUC4xx内部有DSP核,做FFT完全没有问题
作者: rejoice818    时间: 2014-1-7 23:21
互动一下,无伤大雅!

咳咳!请问一下,及本人测试M051的P2口的PWM通道可以捕捉和输出,但P4口的PWM只能输出,但不能捕捉。感觉程序没错。但看TRM又没特别提及,事实上是不是这样的?求厉害版主赐教。

作者: dwxyo    时间: 2014-1-8 08:53
rejoice818 发表于 2014-1-7 23:21
互动一下,无伤大雅!

咳咳!请问一下,及本人测试M051的P2口的PWM通道可以捕捉和输出,但P4口的PWM只能输 ...

Note 2: The PWM0 ~ PWM3, RXD, TXD, RXD1, TXD1, SCL1, SDA1 and CKO can be assigned to different pins. However, a pin function can only be assigned to a pin at the same time, i.e. software cannot assign RXD to P0.3 and P3.0 at the same
time.

在最新的文档中对于配置到P2口和P4口我只看到提及了这样一句话

我的理解是:P4是可以捕捉的
作者: ruyibang    时间: 2014-1-9 15:04
本帖最后由 ruyibang 于 2014-1-9 15:06 编辑

关于M0516的菜鸟问题:是不是不用的管脚串个电阻到地就可以呢?除去RESET管脚以外
作者: dwxyo    时间: 2014-1-9 16:07
ruyibang 发表于 2014-1-9 15:04
关于M0516的菜鸟问题:是不是不用的管脚串个电阻到地就可以呢?除去RESET管脚以外 ...

不用的不接就可以了。
当然你已经说不用的了,我认为你的最小系统已经可以运行
作者: M0516LBN    时间: 2014-1-10 12:25
本帖最后由 M0516LBN 于 2014-1-10 15:56 编辑

问题已解决
作者: zwf9969    时间: 2014-1-10 22:41
小弟我刚接触ARM,稀里糊涂的,也没有入门,我想请教一下,该如何开始编写NUC122的USB驱动?怎么能自学入门ARM呢?望不吝赐教!
作者: lyzimu    时间: 2014-1-11 09:24
MO 配置成 RS-485 自动地址识别模式 (AAD 打开接收中断  是不是收不到地址就不会进中断啊   用串口调试助手 怎么发第九位是高的数据啊?
作者: dwxyo    时间: 2014-1-13 08:37
zwf9969 发表于 2014-1-10 22:41
小弟我刚接触ARM,稀里糊涂的,也没有入门,我想请教一下,该如何开始编写NUC122的USB驱动?怎么能自学入门 ...

首先我要说明的是你要驱动USB,和你要学ARM是两码事

但是要在NUC122上驱动ARM就必须得先会用NUC122
论坛内有很多相关视频教程,在此不一一列举
USB的视频教程给你其中一个链接新唐M0视频教程TC04_USB
http://www.nuvoton-m0.com/forum. ... =51&fromuid=183



作者: dwxyo    时间: 2014-1-13 09:07
lyzimu 发表于 2014-1-11 09:24
MO 配置成 RS-485 自动地址识别模式 (AAD 打开接收中断  是不是收不到地址就不会进中断啊   用串口调试助手 ...

      尽管你要自动识别地址,但是识别到地址之前,数据将接收并存储在RX-FIFO,数据还可以软件配置存储或不存储UART的数据,UART的中断种类是相当多的,看你进的是哪个中断

最后,我们的是M0(零)不是MO(欧)
      
作者: dwxyo    时间: 2014-1-13 09:11
lyzimu 发表于 2014-1-11 09:24
MO 配置成 RS-485 自动地址识别模式 (AAD 打开接收中断  是不是收不到地址就不会进中断啊   用串口调试助手 ...

串口调试软件种类太多,怎么发送第九位,得看你所使用的串口软件有没有可配置发送第九位的功能,一般都只支持第九位是较验或停止位
作者: lyzimu    时间: 2014-1-13 14:18
dwxyo 发表于 2014-1-13 09:07
尽管你要自动识别地址,但是识别到地址之前,数据将接收并存储在RX-FIFO,数据还可以软件配置存储 ...

我只打开了接收中断 如果配置成485 AAD  也能进中断 接收到数据,但是在中断里面接收到的数据都不对。我发01  、02之类的接收到的是FE   之前没用485模式  接收到的数据都是正确的。现在想使用485模式,不太会弄了。不知道怎么操作了。
作者: dwxyo    时间: 2014-1-13 15:22
lyzimu 发表于 2014-1-13 14:18
我只打开了接收中断 如果配置成485 AAD  也能进中断 接收到数据,但是在中断里面接收到的数据都不对。我 ...

我建议程序循序渐进,你试试用485功能,但不用AAD你的程序是不是正确的

一次成功那是少数IT白领能做到的
作者: vleboy    时间: 2014-1-15 00:40
版主你好,我是一个刚接触MO51的新人,请问在COIDE里面怎么设置systick的中断函数,中断里面需要复位哪些寄存器什么的呢?没见到COIDE里面有这方面的介绍。
作者: dwxyo    时间: 2014-1-15 08:28
vleboy 发表于 2014-1-15 00:40
版主你好,我是一个刚接触MO51的新人,请问在COIDE里面怎么设置systick的中断函数,中断里面需要复位哪些寄 ...

我一直用的是KEIL MDK
作者: dwxyo    时间: 2014-1-15 08:36
vleboy 发表于 2014-1-15 00:40
版主你好,我是一个刚接触MO51的新人,请问在COIDE里面怎么设置systick的中断函数,中断里面需要复位哪些寄 ...

本站工具软件版块有好几个专题是针对CooCox的,你可以参考
这是其中一个,针对M051的BSP:

CooCox 发布基于M051和Mini51的CoX库
http://www.nuvoton-m0.com/forum. ... 163&fromuid=183

作者: lyzimu    时间: 2014-1-16 16:20
UA FSR的BIF FEF PEF 等只读寄存器 不是可以写1清零吗(datasheet上这么说) 为什么操作了没有作用呢?
作者: dwxyo    时间: 2014-1-16 16:28
lyzimu 发表于 2014-1-16 16:20
UA FSR的BIF FEF PEF 等只读寄存器 不是可以写1清零吗(datasheet上这么说) 为什么操作了没有作用呢? ...

操作了没有作用是什么意思?
我可以理解成清不了零吗?
作者: lyzimu    时间: 2014-1-16 16:38
dwxyo 发表于 2014-1-16 16:28
操作了没有作用是什么意思?
我可以理解成清不了零吗?

对  清不了
作者: dwxyo    时间: 2014-1-16 17:28
本帖最后由 dwxyo 于 2014-1-16 17:30 编辑
lyzimu 发表于 2014-1-16 16:38
对  清不了

清零是可以的,但是你刚零完又被置位了你看到的也只是清不了,在单步的时候你是可以看到是不是被清了,以及重新被置位的原因
作者: shuminchen    时间: 2014-1-24 09:10
NUC100LE3AN的内部rom分配出一块可读写的,我操作完之后就挂不上仿真器了,有办法修复吗?
作者: dwxyo    时间: 2014-1-24 11:52
shuminchen 发表于 2014-1-24 09:10
NUC100LE3AN的内部rom分配出一块可读写的,我操作完之后就挂不上仿真器了,有办法修复吗? ...

你需要恢复ROM内的内容,NUC100内部的ROM是ISP专用,我们的内FLASH一般都是够你用的,不够用的情况下建议选取更大容量FLASH的芯片
作者: ElliottChang    时间: 2014-2-20 13:51
請問 : nuvoton mcu 有數學運算的Function嗎?(ex:開根號...)

麻煩了,謝謝
作者: dwxyo    时间: 2014-2-20 17:06
ElliottChang 发表于 2014-2-20 13:51
請問 : nuvoton mcu 有數學運算的Function嗎?(ex:開根號...)

麻煩了,謝謝

我们的M4内部有DSP核,可以完成开根功能
作者: ElliottChang    时间: 2014-2-20 23:01
dwxyo 发表于 2014-2-20 17:06
我们的M4内部有DSP核,可以完成开根功能

如果我是用Mini51,再不換chip的前提下 有機會實現嗎?
作者: dwxyo    时间: 2014-2-21 08:40
ElliottChang 发表于 2014-2-20 23:01
如果我是用Mini51,再不換chip的前提下 有機會實現嗎?

软件可以实现,但相对比较费时,以前我用(8位的)AVR都可以FFT,点不多而已
作者: lussby    时间: 2014-2-21 10:29
你好。为什么我用官网的例程测试NUC120LE03A的实时时钟,时钟显示是对的,但是在显示的时候,我发现实际时钟是5-7秒的时候,NUC120LE03A的实时时钟才走一秒呢?
作者: lussby    时间: 2014-2-21 10:33
你好,为什么我用官网的例程测试NUC120LE03A的RTC时钟,发现实际时钟走5-7秒,NUC120LE03A的实时时钟才走1秒呢?我的时钟是根据测试程序要求选择外部时钟12MHz的,单片机的DX32I,DX32O引脚连接32.678KMZ晶振
作者: xukeqin2008    时间: 2014-2-21 11:06
NUC120系列有没有UID,  如果没有用哪款芯片可以代替
作者: dwxyo    时间: 2014-2-24 09:14
lussby 发表于 2014-2-21 10:33
你好,为什么我用官网的例程测试NUC120LE03A的RTC时钟,发现实际时钟走5-7秒,NUC120LE03A的实时时钟才走1 ...

实时时钟是基于外部低速时钟32.768K的

作者: dwxyo    时间: 2014-2-24 09:16
xukeqin2008 发表于 2014-2-21 11:06
NUC120系列有没有UID,  如果没有用哪款芯片可以代替

能跑USB的设备,都支持UID
作者: lussby    时间: 2014-2-24 09:18
dwxyo 发表于 2014-2-24 09:14
实时时钟是基于外部低速时钟32.768K的

恩恩,您好!我现在可以实现时钟显示了。可是在设置中断的时候,我打算让其1/128s中断一次,可是发现没有进入中断。请问设置中断这样设置可吗?                                                                                                                                







int32_t RTC_EnableInt()
{

    RTC->TTR.TTR = 7        ;

        RTC->RIER.TIER = 1;
       
        NVIC_EnableIRQ(RTC_IRQn);

        return E_SUCCESS;

}
作者: lussby    时间: 2014-2-24 09:20
lussby 发表于 2014-2-24 09:18
恩恩,您好!我现在可以实现时钟显示了。可是在设置中断的时候,我打算让其1/128s中断一次,可是发现没有 ...

这是我的中断函数。
/*---------------------------------------------------------------------------------------------------------*/
/* RTC Tick Handle                                                                              */
/*---------------------------------------------------------------------------------------------------------*/
void RTC_TickHandle(void)
{
        printf ("\nOK!\n");
//        S_DRVRTC_TIME_DATA_T sCurTime;
//       
//        /* Get the currnet time */
//        RTC_Read(&sCurTime);
//       
//        printf("Current Time:%d/%02d/%02d %02d:%02d:%02d\n",sCurTime.u32Year,sCurTime.u32cMonth,sCurTime.u32cDay,sCurTime.u32cHour,sCurTime.u32cMinute,sCurTime.u32cSecond);                               
//       
//        g_u32TICK++;
}
作者: dwxyo    时间: 2014-2-24 09:29
lussby 发表于 2014-2-24 09:20
这是我的中断函数。
/*----------------------------------------------------------------------------- ...

单步调试看看哪里出了问题
1/128S能完成你的一个中断不?
作者: lussby    时间: 2014-2-24 09:33
dwxyo 发表于 2014-2-24 09:29
单步调试看看哪里出了问题
1/128S能完成你的一个中断不?

恩。应该没问题。128ms 打印出两个字符应该可以。我试过一秒的也不行。我感觉应该是我设置那里有问题,可是我又检查不出问题出在那,求高手指导我一下,万分谢谢!
作者: dwxyo    时间: 2014-2-24 09:49
lussby 发表于 2014-2-24 09:33
恩。应该没问题。128ms 打印出两个字符应该可以。我试过一秒的也不行。我感觉应该是我设置那里有问题,可 ...

传一个例程供你参考

Smpl_Timer_WDT_RTC.rar

2 KB, 下载次数: 1431


作者: lussby    时间: 2014-2-24 10:40
本帖最后由 lussby 于 2014-2-24 11:01 编辑
dwxyo 发表于 2014-2-24 09:49
传一个例程供你参考

恩。谢谢版主的例程,我之前用的官方例程是可以进入RTC中断的,但是我们公司使用的新唐库程序是之前供应商给的,跟官方有点不一样,我传下我修改过的例程(我们供应商给的库),这个程序是可以正常显示时间的,但是进入不了RTC中断,RTC_EnableInt();这个函数之前是没有的,我是参考官方程序自己添加进去的,麻烦您帮我看一下,谢谢了!

QQ.png (31.43 KB, 下载次数: 427)

这是我的程序打印出来的效果,时间是正确的。

这是我的程序打印出来的效果,时间是正确的。

Test.rar

1.7 MB, 下载次数: 1376

RTC进入中断调试程序


作者: lussby    时间: 2014-2-24 10:44
lussby 发表于 2014-2-24 10:40
恩。谢谢版主的例程,我之前用的官方例程是可以进入RTC中断的,但是我们公司使用的新唐库程序是之前供应 ...

上面的这个程序是在定时器0中断里面打印时钟,串口号为1.波特率为9600. 外部接的晶振分别是12MHZ外部时钟,以及RTC时钟DX32I, DX32O接的32.768KHZ的晶振。
作者: fan168968    时间: 2014-2-24 16:27
请问我进行基于MO516芯片的两个控制器之间的数据通信时,出现如下问题,怎么解释呢?次调机返回给主调机指令时依次返回十六进制的F0,A1,15,0F,05,32,这六个数据传送到主调机后,第一个数据是A1,然后依次是15,0F,05,32,最后才是F0.我不明白为什么F0会出现在最后。还有我利用DrvUART_Write(UART_PORT1,xx,xx);语句编写了一个子函数fasong(xx,xx),就是用来发送数据,比如一串数据存于数组a[5]中,发送到主机,就可以这样写fasong(a,5);因为有5个数据,所以第二个参数是5,经控制器与触摸屏通信实际验证过没问题,但是两台控制器之间进行通信时必须多发一字节,就是要写成fasong(a,6);我不明白为甚要多发?高手指点下号码?
作者: dwxyo    时间: 2014-2-25 08:49
fan168968 发表于 2014-2-24 16:27
请问我进行基于MO516芯片的两个控制器之间的数据通信时,出现如下问题,怎么解释呢?次调机返回给主调机指 ...

你的接收程序,数据处理的有问题,你可以从电脑串口给你的控制器发数据,就能看到整个过程
当然你也可以通过示波器实时监测总线上的数据
作者: dwxyo    时间: 2014-2-25 08:55
lussby 发表于 2014-2-24 10:40
恩。谢谢版主的例程,我之前用的官方例程是可以进入RTC中断的,但是我们公司使用的新唐库程序是之前供应商 ...

我建议你备份以前的程序,然后把和RTC无关的程序注掉,通过RTC的1/128S对某个引脚输出方波,通过示波器查看输出结果
作者: lussby    时间: 2014-2-25 11:13
dwxyo 发表于 2014-2-25 08:55
我建议你备份以前的程序,然后把和RTC无关的程序注掉,通过RTC的1/128S对某个引脚输出方波,通过示波器查 ...

恩恩,谢谢您,我已经解决问题了。
作者: dwxyo    时间: 2014-2-25 11:36
lussby 发表于 2014-2-25 11:13
恩恩,谢谢您,我已经解决问题了。

是按我的方法解决的吗?
我们期待你分享你的解决方案(方法),以帮助更多的人

作者: lussby    时间: 2014-2-26 10:57
dwxyo 发表于 2014-2-25 11:36
是按我的方法解决的吗?
我们期待你分享你的解决方案(方法),以帮助更多的人
...

恩,是我程序的中断函数有问题,我已经把DS1302的显示和中断分享了,链接地址是:http://www.nuvoton-m0.com/forum. ... ;tid=274&extra=
作者: rejoice818    时间: 2014-2-28 14:42
经测试不能通过APROM更新APROM,不知道有没有比较好的Bootloader方法,可以通过把bin文件放SD卡,然后通过控制外设更新APROM。
作者: gaoshengldh    时间: 2014-3-6 21:54
本帖最后由 gaoshengldh 于 2014-3-6 21:57 编辑

你好! 我用NUC123  usb虚拟串口(示例代码),在pc端安装驱动后,可以看到增加了COM3,但是用超级终端/串口助手 却无法 打开COM3,是怎么回事?

作者: dwxyo    时间: 2014-3-7 08:43
gaoshengldh 发表于 2014-3-6 21:54
你好! 我用NUC123  usb虚拟串口(示例代码),在pc端安装驱动后,可以看到增加了COM3,但是用超级终端/串口 ...

这个代码我试验过在我这里没有问题,我用的是WIN7
作者: rejoice818    时间: 2014-3-7 14:43
rejoice818 发表于 2014-2-28 14:42
经测试不能通过APROM更新APROM,不知道有没有比较好的Bootloader方法,可以通过把bin文件放SD卡,然后通过 ...

已经自己解决,哈哈,原来是ICP软件版本问题,换最新版本有支持IAP功能,也能识别芯片版本为DN,附上测试视频:视频G:实验-Bootloader(新增)



作者: czclock    时间: 2014-3-11 23:26
你好,我想请教关于NUC140中CAN 设置的问题,程序中执行DrvCAN_Open(500),设置can的波特率,例程中先设置波特率之后再进行一次检验
if ((u32kbps < (DrvCAN_GetCANBitRate()*95/100)) || (u32kbps > (DrvCAN_GetCANBitRate()*105/100)))
    {
        DEBUG_PRINTF("\nCurrent CAN bitrate = %d\n",DrvCAN_GetCANBitRate());
        return E_DRVCAN_ERR_BITRATE;        
    }
我接着硬件在线仿真时,都是检验波特率是不正确,然后Can就无法正常使用,这是因为什么呢?会不会是硬件问题?
作者: dwxyo    时间: 2014-3-12 08:50
czclock 发表于 2014-3-11 23:26
你好,我想请教关于NUC140中CAN 设置的问题,程序中执行DrvCAN_Open(500),设置can的波特率,例程中先设置 ...

你所谓的波特率不对,是你上述的程序检测不对吗?
如果是,那么你可以直接输出波特率,而不要在调试的过程中去进行一些无关紧要的运算
作者: czclock    时间: 2014-3-12 22:35
dwxyo 发表于 2014-3-12 08:50
你所谓的波特率不对,是你上述的程序检测不对吗?
如果是,那么你可以直接输出波特率,而不要在调试的过 ...

就是利用例程设置波特率,程序检测不对,进行通讯也不对,这个检测程序是官方例程中所配备的,我也不明白为什么会检测出错,也无法正常的can通讯
作者: dwxyo    时间: 2014-3-13 12:05
czclock 发表于 2014-3-12 22:35
就是利用例程设置波特率,程序检测不对,进行通讯也不对,这个检测程序是官方例程中所配备的,我也不明白 ...

你可以下载最新版本的官方例程,同时可以配备USB-CAN硬件调试模块
我们的例程都是经过测试的。
昨天我给你说的,是想要你读出配置后的真正波特率是多少
作者: czclock    时间: 2014-3-15 21:53
dwxyo 发表于 2014-3-13 12:05
你可以下载最新版本的官方例程,同时可以配备USB-CAN硬件调试模块
我们的例程都是经过测试的。
昨天我给 ...

我手头上有USB-CAN的调试器,之前也做过2812的can通讯,现在想请问下如何读出配置后的真正波特率?通过公式计算吗?
作者: dwxyo    时间: 2014-3-22 17:49
czclock 发表于 2014-3-15 21:53
我手头上有USB-CAN的调试器,之前也做过2812的can通讯,现在想请问下如何读出配置后的真正波特率?通过公 ...

计算是可以的
作者: 与时俱进    时间: 2014-3-22 20:33
这个帖子为什么楼层顺序有点乱?
作者: dwxyo    时间: 2014-3-24 14:21
与时俱进 发表于 2014-3-22 20:33
这个帖子为什么楼层顺序有点乱?

最新的在最上面




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