搜寻
常见问答 / 当通过printf()处理信息的时候,如何知道通过哪一组UART传输数据?
https://www.nuvoton.com.cn/support/technical-support/faq/d5e05682-04f1-11ea-b113-05daf7eedf03/
当通过printf()处理信息的时候,如何知道通过哪一组UART传输数据? 1444979220000 在用户开发应用程序的过程中,往往需要通过使用printf()处理信息,如果NuMicro®系列支持的UART不只一组,我们可以通过定义 ”retarget.c”中的DEBUG_PORT,来决定printf()是使用哪一组UART传输数据。初始设置为UART0。 用户可以更改DEBUG_PORT的定义改变printf()的传输端口,以符合自己的系统构架。
常见问答 / 如何设置I2S的采样频率及选择外部晶振?
https://www.nuvoton.com.cn/support/technical-support/faq/d5e7a985-04f1-11ea-b113-05daf7eedf03/
如何设置I2S的采样频率及选择外部晶振? 1446449340000 如下表所示,根据I2S时钟源的计算公式,列出了一些常见的采样频率。 如果系统仅需要一种采样频率,时钟源可以通过外部晶振来实现。如果需要两种以上的采样频率,大部分的芯片就会受到硬件的限制,每个采样频率只能是I2S时钟源分频后的的结果。 以NUC140系列为例,I2S选取12.288Mhz时钟源及16位长度,可以播放的采样频率为96K, 48K, 32K, 24K, 19.2K, 16K, 12K, 9.6K, 8K和 6K。至于44.1K, 22.05K及11.025K,时钟源必须改为5.6448Mhz。 I2S_BCLK = I2S_CLK /(2x(BCLK_DIV + 1)) = SR * Length * 2 Sampling Rate I2S_BCLK (8-bit) I2S_BCLK (16-bit) I2S_BCLK (32-bit) I2S_CLK 192000 3072000 6144000 12288000 24576000 96000 1536000 3072000 6144000 12288000 48000 768000 1536000 3072000 6144000 44100 705600 1411200 2822400 5644800 32000 512000 1024000 2048000 4096000 22050 352800 705600 1411200 2822400 19200 307200 614400 1228800 2457600 16000 256000 512000 1024000 2048000 12000 192000 384000 768000 1536000 11025 176400 352800 705600 1411200 9600 153600 307200 614400 1228800 8000 128000 256000 512000 1024000 6000 96000 192000 384000 768000
常见问答 / Bit-banding的功能是什么,应该如何使用?
https://www.nuvoton.com.cn/support/technical-support/faq/d5ecb298-04f1-11ea-b113-05daf7eedf03/
Bit-banding的功能是什么,应该如何使用? 1446449640000 Bit-banding是Cortex®-M4内核所支持的功能,所有的Cortex®-M4系列,如M451系列、NUC442/472系列和NUC505系列,都支持Bit-banding功能。 Bit-banding将一块较小存储器(bit-band region)中的位(bit)映射到一块较大存储器(alias region)中的字(word),如下图所示;当需要修改位的时候,用户只需修改对应字的内容即可完成位的设置。 我们可以通过利用bit-banding功能将SRAM或外设寄存器映射到各自对应的区域(alias region),通过修改alias region中字的内容,就能够完成对SRAM或外设寄存器的设定,无需复杂的建立过程,从而增加位设置的效率。 Bit-banding的位地址计算公式如下: bit_word_addr = bit_band_base + (byte_offset x 32) + (bit_number × 4) bit_band_base是alias region的起始地址,byte_offset是设置位的字偏移, bit_number是设置位的位偏移,bit_word_addr是对应alias region的地址。 以上图为例: Bit-band region的 0x200F_FFFF[7],对应的alias region为 bit_word_addr = 0x2200_0000 + (0XF_FFFF x32) + (7 x 4) = 0x23FF_FFFC 注1: 通过bit-banding设置外设寄存器的时候,需要先使能对应的外设时钟源。 注2:通过bit-banding设置外设寄存器的时候,如果要设置需要解锁的位,用户需要先解锁,否则操作不会成功。 虽然Cortex®-M0内核并不支持Bit-banding功能,但是NuMicro®家族的M0系列都支持寄存器Pin Data Input/Output,用户可以通过设定该寄存器来控制每一个GPIO的状态。
常见问答 / 在使用NuMicro®家族的PWM输出功能时,应注意哪些问题?
https://www.nuvoton.com.cn/support/technical-support/faq/d5ff0221-04f1-11ea-b113-05daf7eedf03/
在使用NuMicro®家族的PWM输出功能时,应注意哪些问题? 1446450540000 在使用NuMicro®家族的PWM输出功能时,除了将相应管脚配置成PWM输出功能外,还应保证PWM时钟处于打开状态,并对PWM初始化。否则可能造成输出管脚状态的不稳定,产生漏电现象。 以M451系列为例,用户可以依照下列步骤设置PWM输出功能: 使能PWM时钟: CLK_EnableModuleClock(PWM0_MODULE); 选择PWM时钟源: CLK_SetModuleClock(PWM0_MODULE, CLK_CLKSEL2_PWM0SEL_PCLK0, NULL); 重置PWM功能: SYS_ResetModule(PWM0_RST); 设置脚位成PWM功能: SYS->GPC_MFPL = (SYS->GPC_MFPL & (~SYS_GPC_MFPL_PC0MFP_Msk)); SYS->GPC_MFPL |= SYS_GPC_MFPL_PC0MFP_PWM0_CH0; 设置PWM输出功能: PWM_ConfigOutputChannel(PWM0, 0, 180000, 50); 使能PWM输出: PWM_EnableOutput(PWM0, PWM_CH_0_MASK); 开始PWM输出: PWM_Start(PWM0, PWM_CH_0_MASK);
常见问答 / 在Keil开发环境的调试模式(Debug Mode)下,为什么查看的变量会显示“not in scope”?
https://www.nuvoton.com.cn/support/technical-support/faq/d6040b34-04f1-11ea-b113-05daf7eedf03/
在Keil开发环境的调试模式(Debug Mode)下,为什么查看的变量会显示“not in scope”? 1446450840000 当在调试模式中产生中断时,要查看变量内容值,但是在watch window中却显示“not in scope”,如下图所示: 这是因为编译器在优化之后,会将变量存储在R1等寄存器中,而watch window仅能够从内部存储器中取值,所以会显示“not in scope”。 解决方法有3种: 将变量设置成全局变量。 将变量设置成volatile型。 将”Options for Target…”中”C/C++”的”Optimization “设置成”Level 0 (-O0)”,如下图所示:
常见问答 / 用户使用NuMicro®控制器做I2C开发,并使用查询方式发送数据时,应注意哪些问题?
https://www.nuvoton.com.cn/support/technical-support/faq/d60bac57-04f1-11ea-b113-05daf7eedf03/
用户使用NuMicro®控制器做I2C开发,并使用查询方式发送数据时,应注意哪些问题? 1446451140000 在使用NuMicro®控制器做I2C开发时, 如果不是采用中断方式处理数据,而是以查询方式处理时,应当注意下面状况: 在I2C总线发出STOP信号指令后,应等待一段时间,检查总线的状态,以确保STOP信号结束之后,方可发送START信号,否则将会导致程序错误。
常见问答 / 如何在BOD中断函数中擦写Flash数据?
https://www.nuvoton.com.cn/support/technical-support/faq/d610b56a-04f1-11ea-b113-05daf7eedf03/
如何在BOD中断函数中擦写Flash数据? 1446451320000 在系统进入BOD中断函数后,若要擦写Flash内部数据,则应关闭BOD功能,并且清除BODOUT。待擦写完成后,再重新打开BOD功能。
常见问答 / 如果在配置位中使能看门狗(WDT)功能,是否会影响ISP升级流程?
https://www.nuvoton.com.cn/support/technical-support/faq/d646b9a8-04f1-11ea-b113-05daf7eedf03/
如果在配置位中使能看门狗(WDT)功能,是否会影响ISP升级流程? 1464846303596 如果在配置位中使能看门狗功能,那么看门狗会自动启动。预设的时钟源是内部低速10KHz时钟,看门狗复位时间=溢出时间+延时时间=(2^18+1026)/10k=26.3秒。 在新唐提供的标准ISP范例程序,并未包含清看门狗的功能。如果在配置位中使能了看门狗功能,若ISP升级时间超过26.3秒就会出现看门狗复位,ISP升级会失败。 因此,如果客户使用标准ISP范例程序,并且需要在配置位中使能看门狗功能的话,请务必将清看门狗的功能加入程序中;否则当ISP操作时间超过26.3秒,会因为升级时间过长,超过看门狗复位时间,从而导致芯片复位,使ISP升级失败。
常见问答 / 为什么PDMA送出的数据内容,会发生位移现象?
https://www.nuvoton.com.cn/support/technical-support/faq/d650cbce-04f1-11ea-b113-05daf7eedf03/
为什么PDMA送出的数据内容,会发生位移现象? 1467018284492 当来源或目标的地址设为数组起始地址时,用户必须检查数组起始地址是否为字节(word)对齐。 以下例buffer起始地址为0x2000_0039,因内存排序为编译程序决定,会有非字节对齐的情况发生。 unsigned int test2; unsigned char test1; unsigned char buffer[100]; 当PDMA来源或目标的地址设定成buffer(0x2000_0039),PDMA的硬件配置会以字节存取(0x2000_0038)。 假设使用PDMA加UART传送数据时,将会送出0x01, 0x03…,而不是从0X03开始传送。 针对内存放置为非对齐字节的状况,可以使用aligned (4),让数组对齐内存中的字节 unsigned char buffer[100] __attribute__ ((aligned (4))); 数组buffer的起始地址会以4个byte的方式对齐摆放。 当PDMA来源或目标的地址设定成buffer(0x2000_003C),已有字节对齐。假设使用PDMA加UART传送数据时,将会从0X03开始传送。
常见问答 / 使用ADC取样时,如何达到最高的取样频率?
https://www.nuvoton.com.cn/support/technical-support/faq/d680405c-04f1-11ea-b113-05daf7eedf03/
使用ADC取样时,如何达到最高的取样频率? 1467351474652 使用ADC取样时,依据AVDD提供的电压,ADC有不同的时钟源频率限制。用户可以根据系统的模拟电压,选择最快的时钟源频率,来达到ADC的最高取样频率。 以NuMicro® NUC442/472系列为例: 当AVDD工作在4.5 ~ 5.5V时,时钟源频率限制最快可以输入16 MHz。我们可以选择倍频PLL作为时钟源,再经过适当的除频,取得最快的时钟源频率。 例如,将PLL倍频到80 MHz,再经过除频器除5,就可以得到16 MHz的时钟源,并且ADC的取样频率达到最高的800 kSPS。