上海域格ARS平台cat1模块openCPU接口及相关问题

本文详细介绍了上海域格CAT1模块系列的OpenCPU接口使用及常见问题,包括SDK接口如强制关机、文件读写、ADC、内存检测等,并提供了SIM卡流量、MAC地址获取等实用功能。同时,讨论了SPI模式、IO中断处理、系统内存状态检测、文件操作等技术细节,以及AT指令的使用方法和休眠流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上海域格 cat1模块系列openCPU接口及相关问题

CLM920_RC3(RV3 RE3) 、CLM920_RC5(RV5 RE5)、RD6、CLM920_RV7、CLM920_RV8、YV9、KV3模块调试openCPU一些相关接口和常遇到的问题。

1、SDK相关接口

RC3强制关机接口: extern void OnKeyPoweroff_Start(void);

file数据读写: extern void nvm_cache_flush_all(void);
写完文件执行下这个接口,执行后等待2s再重启(ASR建议)

SDK ADC接口:
在这里插入图片描述
在这里插入图片描述
查询剩余空间大小接口: unsigned int FDI_GetFreeSpaceSize(void)
升级的时候,NVM勾选去掉,既不会擦除

临时屏蔽IO中断和屏蔽全局中断的API:
UINT32 cpsr;
cpsr = disableInterrupts();
//code
restoreInterrupts(cpsr);

重启和关机的接口:
关机:OnKeyPoweroff_Start(),重启:PM812_SW_RESET();

延迟接口:
通信需要1MS的阻塞,OSATaskSleep((x)) ,这个函数最小阻塞延时是1个TICKS, 也就是5ms

模块的MAC码能获取接口: UINT8 *mvUsbNetGetMacAddress(void)

SIM卡流量接口:
流量这块只能暂时获取档次开下状态下消耗的流量,,可以让客户试试这两个接口
unsigned long long get_rx_byte(void)
unsigned long long get_tx_byte(void)

检测系统内存使用状态的接口:
UINT32 OsaGetDefaultMemPoolFreeSize(void)

2、openCPU常见问题

SSP_SPI_MODE3,SPI空闲是高电平 第二个边沿有效,还有一个参数是第一位是最高位还是最低位
——这个是高位在前,第一位是最高位

两个IO中断,需要存储些数据这个要怎么做
——xtern UINT32 getGPIOPinmuxAddress(UINT32 GPIONum)

获取GPS的寄存器地址的:
UINT32 getGPIOPinmuxAddress(UINT32 GPIONum)
{
UINT32 GPIOPinmuxAddr = 0;
if(GPIONum <= 36)
GPIOPinmuxAddr = 0xd401e0dc + GPIONum*4;
else if(GPIONum >= 49 && GPIONum <= 54)
GPIOPinmuxAddr = 0xd401e1a0 + (GPIONum - 49)*4;
else if(GPIONum >= 60 && GPIONum <= 66)
GPIOPinmuxAddr = 0xd401e304 + (GPIONum - 60)*4;
else if(GPIONum >= 71 && GPIONum <= 86)
GPIOPinmuxAddr = 0xd401e1b8 + (GPIONum - 71)*4;
else
ASSERT(0);
return GPIOPinmuxAddr;
}

cat1open如何从SDK里获取IMEI 、ICCID、LBS数据,有函数接口可以用吗,比如 IMEIRead
——有个内部使用at的demo

调用 SilentResetDisable(); 在那个函数里调用?
——Phase2Inits_exit 开头就可以

用开发板调试的时候用的PCM输出语音,现在板子硬件没有加音频解码芯片,直接使用差分音频口输出,问一下这里程序怎么调用我们的API
——参考参考设计加一路功放才可以

i2c可以做普通io来用吗?
——i2c做普通io来用需要特殊版本

open不插SD卡情况下,如何创建一个文件进行读写:
在这里插入图片描述
参考这里:
在这里插入图片描述
amr录音文件固定时长
——接口里没有时间参数,只能用定时器去停止录音
在这里插入图片描述
OnKeyPoweroff_Start这个头文件是哪个
——没头文件,引用下就好 void OnKeyPoweroff_Start(void);

enable sys sleep设置休眠流程:
1、休眠中
2、数据唤醒后
3、disable sys sleep
4、唤醒后,程序需要处理的任务,比如发送数据
5、enable sys sleep

SendATCMDWaitResp参数说明:
sATPInd:AT执行通道,不需要管,默认使用TEL_AT_CMD_ATP_10,使用esim(TEL_AT_CMD_ATP_10+36),双卡使用详见sdk中sample中29-dualsim
inStr:AT指令字符串
timeOut:超时时间,单位s
okFmt:注意的参数,这里一般时判断是判断AT返回时,OK之前的正常上报数据,但是不要填写"OK",会和okFlag冲突造成异常,比如如下三个AT
AT^SYSINFO
^SYSINFO: 0,0,0,0,255

OK
SendATCMDWaitResp(TEL_AT_CMD_ATP_10, “AT^SYSINFO\r\n”, 3, “^SYSINFO:”, 1, NULL, resp_str, sizeof(resp_str));
也可以不关注okFmt, resp_str中解析判断即可
SendATCMDWaitResp(TEL_AT_CMD_ATP_10, “AT^SYSINFO\r\n”, 3, NULL, 1, NULL, resp_str, sizeof(resp_str));

AT+CGSN
123456789012347

OK
SendATCMDWaitResp(TEL_AT_CMD_ATP_10, “AT+CGSN\r\n”, 3, NULL, 1, NULL, resp_str, sizeof(resp_str));

AT+CMGF=1
OK
SendATCMDWaitResp(TEL_AT_CMD_ATP_10, “AT+CMGF=1\r\n”, 3, NULL, 1, NULL, resp_str, sizeof(resp_str));

okFlag:正常都是1,即表示捕捉OK作为AT的成功返回标志

errFmt:一般填写"ERROR",或者更准确的错误信息,判断到错误返回会在timeout之前结束AT
outStr:AT返回的结果,如"^SYSINFO: 0,0,0,0,255"
outLen: sizeof(outStr)
*/
int SendATCMDWaitResp(int sATPInd, char *inStr, int timeOut, char *okFmt, int okFlag, char *errFmt, char *outStr, int outLen);

检测系统内存使用状态的接口:UINT32 OsaGetDefaultMemPoolFreeSize(void)

后续会添加,请看下一篇文章。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值