CC2640的sensor contrlloer数据定义求教
我用CC2640的sensor contrlloer做SPI的任务,在初始化代码那里面,需要对外部设备初始化发送30个字节的数据,这30个字节是配置外部芯片用的,数据是固定的。我的想法是:使用input数据定义,然后在CCS工程里面定义一个常量数组,将数组数据赋值给input数据,然后用for循环发送:
for(U16 n=0;n<30;n++){
TempData =input.SPIFrameData[n] ;
spiTx8bit (SPI_POL0_PHA1,TempData);
fwDelayUs(90,FW_DELAY_RANGE_100_US);
}
这样就需要预先对input.SPIFrameData[n] 赋初值,应该是在我的CCS任务代码里面操作,可是我不知道具体应该在任务的哪里操作,怎样操作;我最先是放到任务的初始化部分前面的:
scifOsalInit();
scifOsalRegisterCtrlReadyCallback(scCtrlReadyCallback);
scifOsalRegisterTaskAlertCallback(scTask1198AlertCallback);
scifInit(&scifDriverSetup);
结果不行,任务启动后初始化发送的30个数都是0;
我试图在sensor contrlloer里面直接定义数组并发送,不使用input数据的方式,结果貌似不支持数组定义。
现在我该怎么办?有没有什么方法能让我在Initialization Code里面发送30个数?难道只能连续写30遍spiTx8bit (SPI_POL0_PHA1,TempData)?
你好,
Execution code里面右边有一个自定义的data structures。
data structures里面定义的是可自定义的数据,该数据可以定义为M3输入到SCE里面的数据,也可以是SCE输出给CC2640M3的数据。
以SCE的IIC例程为例子,他定义了输入输出的数据,定义是在scif.c文件里面。
用的话是在mian_tirtos.c文件里面。
套用到你的程序中,你亦可以定一个30个数字,初始化为输入,然后由sensor controller engine用。
你好,
谢谢您的回复,实际上 我就是采用的定义输入数据的方式做的,我定义之后可以在sci,h中看到的,如下:
typedef struct {
uint16_t SPIFrameData[30]; ///<
} SCIF_ADS1198_INPUT_T;
由于是初始化数据,因此应该是执行一次,所以必须在初始化任务时候就要赋值吧?
我现在是不知道何时何地该给这个输入赋值,该如何操作呢?
你好,
你可以参考sensor controller的例程。
在初始化中给这个input赋值,赋值完之后再启动SCE。
1157.main_tirtos.c