主题中讨论的其他器件:TLV320ADC6120
由 PurePath Console 3生成的示例 C 代码不起作用。 以下是代码: 它由 PurePath Console 3生成。
#pragma ANON_UNION //我添加了行以使其正常工作
typedef unsigned char cfg_u8;
typedef union{
结构{
CFG_u8偏移;
CFG_u8值;
};
结构{
cfg_u8命令;
CFG_u8参数;
};
} cfg_reg;
#define CFG_meta_switch (255)
#define CFG_META_DELAY (254)
#define CFG_META_BURST (253)
/*通过 TWI 将寄存器写入 ADC 板。 *
void transmit 寄存器(cfg_reg *r、int n)
{
int i = 0;
while (i < n){
switch (r[i].command){
CFG_META_SWITCHCH 案例:
//用于传统应用程序。 被忽略。
中断;
案例 CFG_META_DELAY:
nrf_delay_ms (r[i].param);
中断;
案例 CFG_META_BURST://现在未使用。 必须修改 i2c 写入函数才能使用突发模式。 数据很小、不应产生太大的差异。
I2C_WRITE ((unsigned char *)&r[i+1]、r[i].param);
i +=(r[i].param /2)+1;
中断;
默认值:
I2C_WRITE ((unsigned char *)&r[i]、2);
中断;
}
i++;
}
}
//以下是用于对 TI ADC 6120进行编程的 I2C 代码。
CFG_reg 寄存器[]={
#define 校验和(67)
//由 ADCx120EVM-SW v3.0.5生成
// TLV320ADC6120器件配置
//----------------------------------
//重置
//----------------------------------
//选择第0页
{ 0x00、0x00 }、
//重置设备
{ 0x01、0x01 }、
// 1ms 延迟
Transmit _registers (registers、sizeof (registers)/sizeof (register[0])); //此函数调用来自 PurePath Console 3中的示例
C 编译器与 上述函数调用中的" register[0]"不同。 C 编译器抱怨它不 是"下标值不是数组指针或向量"。
Transmit _registers (®isters、sizeof (registers)/sizeof (registers.command)); -此函数调用有效(仅用于测试)、但我不认为 sizeof (registers.command)是正确的元素。 我不明白
typedonion 和 cfg_reg 寄存器结构;因此我不知道如何找到第一个元素的大小-(寄存器[0])。 调用 Transmit 寄存器函数的正确方法是什么?