ChipON KF8 系列 MCU 常见问题 Q&A
1、 KF8 系列支持 C 编译器吗?C 编译器集成与 ChipON IDE 中,支持标准 MCUC 语言开发
2、 KF8 系列 MCU 支持位操作吗?
功夫 MCU 不直接支持位变量的声明,当可以声明位结构体变量,可针对位操作建立宏声明。可直接建立类型 sfr_bits 的变量,随后宏定义系统所需的位为建立变量的某位,位前面加“ _”,该类型为一个结构体,声明在 KF8COMMON.h 文件中,包括 KF 芯片的头文件会自动包含该声明。 3、 KF8 系列 MCU 支持库吗?
ChipON IDE 不包含通用库,即所有函数均需靠代码实现。 4、为什么 KF8 汇编调用校准信息,但 C 语言开发不需要?
C 语言编译会针对选择的型号自动添加校准调入代码,因此不需要单独编写,而汇编每条占用一个物理地址,所有的代码均需自己编写。 5、 KF8 芯片初始上电 RAM 值是多少?
上电后 RAM 值不确定,如欠压复位,但电源存在后 RAM 会保持,长时间无电后,一般RAM 值为 0。汇编程序如果需要变量带初始或需要起始为零,需要手动赋值指令。但 C 语言编译会实现变量的初始化赋值以及无初始化变量的清零工作。 6、欠压复位需要保留原有 RAM 值怎么办?
汇编程序需要判断芯片起始运行类型,查看寄存器状态位,根据上电类型进行 RAM 的初始化处理。 C 语言需要建立一个空函数 void _sdcc_gsinit_startup()失效编译器 RAM 初始化,并根据运行是上电运行还是欠压复位运行选择是否初始化 RAM 操作。 具体实现见应用笔记“ MCU 欠压复位不清零 RAM 的实现方法”。 7、 KF8 系列 MCU 带 AD 吗?精度如何?
KF 系列 MCU 大多数型号均带有 AD 模块,通道数量根据芯片型号不同而有差异,具体见数据手册。一般来说 KF8Fxxx 命名的 MCUAD 为 10 位,但 KF8FXXXX 命名的 MCUAD 为
12 位。 KF8V 和 KF8TS 系列的芯片 AD 均为 12 位。为可靠性设计建议配置 1 次 AD 的采样为11us。 8、 AD 功能的使用存在电流档的选择,有什么区别吗?
应该按照数据手册选择合适的电流档,选择见手册说明中的频率对应关系。通常电流大转换速度快,但不是选大的就好,需要满足对应的频率。否则会存在 AD 结果存在抖动的问题。 9、 IO 口操作听说有“读-修改-写”, KF8 系列 MCU 也是这样吗?
针对 KF8FXXX 系列的 MCU 是这样的, IO 的赋值采用优先读出,改变对应位,整体结果送出。因此为了可靠性建议针对同一 IO 口的不同引脚不要连续操作,如果连续操作建议使用空指令滞后。该模式下的操作问题一般来源于上一条的执行状态电平未到达一定水平,新指令操作读取到错误的状态,并随后的写将上次的操作否定。部分型号有锁存寄存器,即 IO 的操作不使用这种模式,因此不存在该问题,锁存寄存器为 PxLR。 10、为什么移植过来的程序,别人同容量的空间够,但 KF8 系列的不够?
KF8CC 编译存在众多的编译策略,虽然默认了选择优化,但基于平台差异,针对代码的识别存在对应的编译规则,建议采用简单化表达,将连续的表达式进行拆分。尽量不用浮点运算和指针运算。 更多见应用笔记“ ChipON-IDE 编译器效率实现说明.pdf”说明。 11、 KF8 系列 MCU 支持多级中断吗?
KFMCU 中断入口有 2 种, KF8Fxxx 系列只有 1 个中断入口在 0x0004 位置,但其他系统目前支持 2 级中断,不同中断的优先级寄存器可配置。 这个好像没写完的。 12、中断需要保护现场, KF8 系列开发的保护怎么实现的?
KF8 系列采用精简指令集,汇编指令主要只有 68 条,不存在压栈出栈指令,因此汇编代码中断需要手动考虑保护寄存器。 C 语言中断会自动实现压栈出栈的保护,因此中断代码在进入执行前会额外执行一部分代码,主要压栈信息为 PCH、 PSW、 BANK、 R0、 R1。 C 编译器R0-R7 中仅使用 R0、 R1, R2-R5 用来保护现场数据,针对部分芯片还会保护 R7(指针调用)。因此 C 语言开发中嵌汇编实现主要可用为 R0 和 R1,如果使用其他的需要暂停中断使能,使用完毕再打开中断。 13、为什么配置了 PWM 的占空、频率输出,运行过程会错掉?
产生该原因主要应该确认其他代码未进行修改,再次确认该型号是否 IO 口操作使用了“读-修改-写”的模式,如果是产品设计时 PWM 输出所在端口上其他位不要使用输出模式,输出采用其他端口,否则结果输出刷新 PWM 所在端口,一旦电平被操作,会叠加到 PWM 输出信号上,造成 PWM 输出异常。 14、 KF8 系列晶振时钟有多高,精度怎么样,支持外部晶振吗?
根据型号不同, KF8 系列 MCU 内部时钟根据型号不同一般最大为 4M/8M/16M/32M,可以通过寄存器进行 2 次或多次分频分频, 最小工作频率可到 32K,常温下精度误差 1%。部分型号仅支持内部时钟,部分芯片可选择外部时钟,具体见芯片选型。 15、 KF8 系列芯片有 LDO 吗?好用吗?
部分型号的芯片具有 LDO,电压规格有 1.7V、 1.9V、 2V/3V/4V 之多,具体见型号选型,精度常温下误差 1%。 16、 KF8 系列芯片主要用于哪些行业?
KF8 系列芯片大多属于通用 MCU,部分为行业专用,很多型号满足工业、汽车级别使用,也有针对家电控制和消费类产品的型号。因此可广泛用于各行各业,常见方向如汽车 BCM、工业、家电、消费等 17、 KF8 系列芯片工作电压时多少?是否能可靠工作?
KF8 系列 MCU 根据应用不同、行业不同,工作电压范围宽,支持 5.5V 的高压, 部分型号最高瞬态电压可以到 7.5V, 低压支持有 1.8V、 1.9V、 2.1V、 2.3V、 2.5V、 2.6V 等多个范围可选。 MCU 运行可靠。建议配置字里面打开掉电检测,能够很好的做到欠压复位,从而不会因为特殊操作出现异常,如写 EE 需要高电压水平,否则会出现不稳定。 18、 KF8 系列芯片的 BEE 是什么,可通常的 EE 有什么不同吗?
BEE 全称为 BLOCK EEPROM ,可以擦写 100 万次,支持运行过程中修改作为数据使用。一个地址写有效位数为 16bit。和普通 EE 存在差异,存在块和页的概念,擦除仅在也的首块操作会执行,并且整页擦除。最小操作地址为块,即 4 个连续地址。 19、 KF8 系列芯片 BEE 可以选择保留但仅下载程序吗?
可以的,要想实现该功能需要使用 ChipON PRO 软件进行编程目标的勾选,但要求程序区不能加密,否则 BEE 无法读出,而 BEE 同程序区一样,擦除命令会一块被擦除
页:
[1]
2