由于最近一直在玩墨水屏,正好看到了沁恒CH582F低功耗蓝牙芯片,由此从0开始开发。
开发环境搭建
具体可以看着网上的教程一步一步来。CH571F CH573F CH582F CH592F核心板SuperMiniWCH蓝牙开发板RISCV-淘宝网
我买的是CH582F,对比M型号引脚少了很多。
安装MounRiver Studio (这里我用的是MounRiver 2)用WCHISPTool的USB模式下载即可
代码移植
由于底层已经非常完善,只要对基础的库函数用CH582F的库函数重新定义即可。
这里是一些代码的截取:
main里的SPI初始化
void _init(void){
//spi
GPIOA_ModeCfg(GPIO_Pin_13|GPIO_Pin_14, GPIO_ModeOut_PP_5mA);
GPIOA_ModeCfg(GPIO_Pin_5|GPIO_Pin_12|GPIO_Pin_15, GPIO_ModeOut_PP_5mA);//测试发现5mA也能使用
GPIOA_ModeCfg(GPIO_Pin_4, GPIO_ModeIN_PU);
SPI1_MasterDefInit();
}
库文件里的引脚定义
#define EPD_SCL_Clr() GPIOA_ResetBits(GPIO_Pin_13)
#define EPD_SCL_Set() GPIOA_SetBits(GPIO_Pin_13)
#define EPD_SDA_Clr() GPIOA_ResetBits(GPIO_Pin_14)
#define EPD_SDA_Set() GPIOA_SetBits(GPIO_Pin_14)
#define EPD_RES_Clr() GPIOA_ResetBits(GPIO_Pin_15)
#define EPD_RES_Set() GPIOA_SetBits(GPIO_Pin_15)
#define EPD_DC_Clr() GPIOA_ResetBits(GPIO_Pin_5)
#define EPD_DC_Set() GPIOA_SetBits(GPIO_Pin_5)
#define EPD_CS_Clr() GPIOA_ResetBits(GPIO_Pin_12)
#define EPD_CS_Set() GPIOA_SetBits(GPIO_Pin_12)
#define EPD_ReadBusy GPIOA_ReadPortPin(GPIO_Pin_4)
一些小坑
读了数据手册,然后发现,CH582F是没有SPI1 的引脚的
所以只能用SPI0
但是最后程序中还是用SPI1实现的SPI0功能。问题不大。。。