# MMWAVELINK FOR STM32F103_1 **Repository Path**: xfgithub/mmwavelink-for-stm32f103_1 ## Basic Information - **Project Name**: MMWAVELINK FOR STM32F103_1 - **Description**: 移植mmwavelink到stm32上面,并且留有awr2243控制程序 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2025-06-16 - **Last Updated**: 2025-06-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 函数记录 记录每个函数的移植情况 程序中的printf需要改成stm32的串口输出,底层的log输出没做,如果需要做的话再mmwavelink里面的rl_trace里面有宏定义,改成自定义参数就行 ## 配置相关的函数 ### 函数: int MMWL_openConfigFile();😊 打开配置文件,由于配置写死,这一步无所谓 ### 函数: void MMWL_getGlobalConfigStatus(rlDevGlobalCfg_t *rlDevGlobalCfgArgs);😊 获取全局设置,对应参数参考配置文件在这个函数里面写死 ### 函数: void MMWL_readPowerOnMaster(rlClientCbs_t *clientCtx)😊 获取启动设置,对应参数参考配置文件在这个函数里面写死 ### 函数: ....等等..省略.config文件里面的函数都是这样 ## 正常流程中的函数 ### 函数3: int MMWL_SOPControl(unsigned char deviceMap, int SOPmode)☹️ 需要实现底层,这里就是根据SOPMODE去设置sop0,sop1,sop2对应io口的高低电平 ### 函数: int MMWL_ResetDevice(unsigned char deviceMap)☹️ 需要实现底层,复位对应设备,就是把deviceMap对应的awr2243的nrst引脚拉低延时再拉高 伪代码: 设置nrst为低电平 延时10ms 设置nrst为高电平 ### 函数: int MMWL_powerOnMaster(unsigned char deviceMap):比较重要的一个函数 所有的底层函数都在这里面链接(赋值给指针) ### 函数: int MMWL_firmwareDownload(unsigned char deviceMap) 下载awr2243固件,mss不会变,这里好像是下载的额外的patch,我之前用串口也烧录过,旧版和新版都烧录过,不过我忘了现在是哪个版本,需要用之前的程序跑出来看看log ### 函数: ....等等..省略.跟着程序往下走就行 ## 官方手册上说了需要实现的函数,然后MMWL_powerOnMaster和对应的指针链接,需要完全由单片机实现的函数,移植过程中需要由指针指着的函数 注意worning:可能我这里参数会看差位置,所以可以检查一下参数释放正确,检查方法就是看MMWL_powerOnMaster对应的指针的定义(*函数指针)(args**) ### 函数:int MMWL_computeCRC(unsigned char* data, unsigned int dataLen, unsigned char crcLen,unsigned char* outCrc) 调用crc_compute.c文件的函数去实现计算 ### 函数: int MMWL_disableDevice(unsigned char deviceIndex) 需要实现底层,关闭deviceIndex对应设备,把nrst拉低,让设备一直处于复位状态 伪代码 设置nrst为低电平 ### 函数: int MMWL_enableDevice(unsigned char deviceIndex) 需要实现底层,打开deviceIndex对应设备,把nrst拉高,让设备一直退出复位状态 伪代码 设置nrst为高电平 ### 函数: void MMWL_asyncEventHandler(rlUInt8_t deviceIndex, rlUInt16_t sbId,rlUInt16_t sbLen, rlUInt8_t *payload):比较重要 不需要重新实现,中断服务函数,不用实现,已经写好,重点是如何注册这个函数 ### 函数: rlComIfHdl_t stm32_CommOpen(rlUInt8_t deviceIndex, rlUInt32_t flags) 见注释 ### 函数: rlInt32_t stm32_SpiRead(rlComIfHdl_t fd, rlUInt8_t *pBuff, rlUInt16_t len) 见注释 ### 函数: rlInt32_t stm32_SpiWrite(rlComIfHdl_t fd, rlUInt8_t *pBuff, rlUInt16_t len) 见注释 ### 函数: rlInt32_t stm32_CommClose(rlComIfHdl_t fd) 见注释 ### 函数: void stm32_CommIRQMask(rlComIfHdl_t fd) 见注释 ### 函数: void stm32_CommIRQUnMask(rlComIfHdl_t fd) 见注释 ### 函数: rlInt32_t stm32_RegisterInterruptHandler(rlUInt8_t deviceIndex,RL_P_EVENT_HANDLER pHandler, void* pValue) 见注释 ### 函数: rlUInt32_t stm32_DeviceWaitIrqStatus(rlComIfHdl_t fd, rlUInt8_t highLow) 见注释