编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

赛普拉斯(Cypress)单片机CY8C4147系列开发介绍

wxchong 2024-06-11 10:04:51 开源技术 18 ℃ 0 评论

赛普拉斯(Cypress)单片机

最近在开发车载电子模块时,用到了赛普拉斯(Cypress)单片机CY8C4147系列。这个芯片在功能上还是比较强大的,基于ARM Cortex M0的内核,集成1路CAN和LCD驱动,还支持触摸按键。基本上一块芯片就可以满足现在车载ECU的所有需求,不需要再做外部扩展。

编译器

建议采用官方编译推荐的编译器PSoC Creator,可以生成一些底层代码,免得去一页页啃数据手册。而且免费,也不需要破解。

用的过程中,可能会出现工程关闭以后再打开,会发现源文件无法编辑。这时候只需要关闭已经打开的源文件,再重新打开就可以了。

修改生成的代码

系统生成的代码中,如果需要修改部分内容,需要注意修改的位置。选择clean&build,代码将重新生成,修改部分会丢失。

/* `#START isr_systemtimer_Interrupt` */

添加的代码一定要写在这种特殊的位置,才能不被clean掉

#if _M_DRV_MCU_ISR_TIMESLICE

flgTimeSlice = true;

#endif

/* `#END` */

串行控制模块SCB

同一个SCB是不能共用的。比如,SCB[0]不同时用做Uart和spi,必须错开使用。也就是说,如果SCB[0]用作Uart,那么就不能再配置成spi了。

TopDesign.cysch

PSoC Creator提供图形化的驱动代码配置TopDesign.cysch

但是应用过程中,也会有些问题。比如,删除部分模块,再恢复该模块后,会报错,可能需要重启软件修复;修改配置报错,恢复修改之前的状态后依旧报错,需要重启软件,重新编译才能修复。

内部EEPROM

CY8C4147支持内部EEPROM,实际上是FLASH模拟的。定义内部EEPROM起始地址,

const uint8_t Em_EEPROM_em_EepromStorage[Em_EEPROM_PHYSICAL_SIZE]

__ALIGNED(CY_FLASH_SIZEOF_ROW) = {0u};

起始地址必须是CY_FLASH_SIZEOF_ROW(0x80)的倍数。

添加内部EEP调试,仿真速度会变慢。

接下来,讨论一下关于Bootloader的几个问题。

内部时钟和外部时钟

在设计Boot到App的跳转时,如果选择外部时钟跳转,程序会跑飞,因此boot程序中可以采用内部时钟来规避这个问题。

flash读写

根据编译器提供flash块写驱动,需要自行开发字写驱动,在这个过程中需要注意跨块flash写。

固件s19文件制作

应用程序偏移,修改起始地址cm0plusgcc.ld中修改

CY_APPL_ORIGIN = 0x5000;

生成HEX,取 0x5000到有效程序长度,再通过JFlash生成S19文件。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表