调试了好几天,还是没有进展,不知道是不是程序的问题,IO配置代码如下:
static void ConfigSDAOutputState(void)
{
PIN_setConfig
(
TIPinHandle
,
PIN_BM_OUTPUT_MODE | PIN_BM_INPUT_MODE
,
LOCALCONFIG_PIN_SDA | PIN_GPIO_OUTPUT_EN | PIN_INPUT_DIS | PIN_PUSHPULL | PIN_DRVSTR_MAX
);
}
static void ConfigSDAInputState(void)
{
PIN_setConfig
(
TIPinHandle
,
PIN_BM_OUTPUT_MODE | PIN_BM_INPUT_MODE | PIN_BM_PULLING
,
LOCALCONFIG_PIN_SDA | PIN_GPIO_OUTPUT_EN | PIN_INPUT_EN | PIN_PULLUP
);
}
static void SetSCLOutputState(unsigned char unsigedCHARFlag)
{
if(unsigedCHARFlag == DEVICE_CONFIG_RETURN_LOW)
{
PIN_setOutputValue(TIPinHandle,LOCALCONFIG_PIN_SCL, 0);
}
if(unsigedCHARFlag == DEVICE_CONFIG_RETURN_HIGH)
{
PIN_setOutputValue(TIPinHandle,LOCALCONFIG_PIN_SCL, 1);
}
}
static void SetSDAOutputState(unsigned char unsigedCHARFlag)
{
if(unsigedCHARFlag == DEVICE_CONFIG_RETURN_LOW)
{
PIN_setOutputValue(TIPinHandle,LOCALCONFIG_PIN_SDA, 0);
}
if(unsigedCHARFlag == DEVICE_CONFIG_RETURN_HIGH)
{
PIN_setOutputValue(TIPinHandle,LOCALCONFIG_PIN_SDA, 1);
}
}
static unsigned char ReceiveSDAData(void)
{
unsigned char uCHARTemp;
uCHARTemp=PIN_getInputValue(LOCALCONFIG_PIN_SDA);
if(uCHARTemp == 0x00U)
{
return DEVICE_CONFIG_RETURN_LOW;
}
if(uCHARTemp == 0x01U)
{
return DEVICE_CONFIG_RETURN_HIGH;
}
return 0xFFU;
}
Susan Yang:
您现在想使用CC1310的I2C?那您可以下载tirtos_cc13xx_cc26xx,里面有相应的例程。CC1350和CC1310的外设的程序,两者可以共用不须修改。
Viki Shi:
提供一个I2C的例程供参考: e2e.ti.com/…/i2ctmp006.c
Viki Shi:
关于引脚的配置,请参考如下例程:
e2e.ti.com/…/CC1310_5F00_LAUNCHXL.c
另外也推荐结合I2C driver一起看: software-dl.ti.com/…/index.html
da qin zheng sheng:
可以啊,和其它arm芯片一样,使用寄存器io模拟i2c。
Steven.Lee:
回复 Susan Yang:
我用的元件是非标准I2C总线,不能使用标准的方式。。。所以有没有模拟I2C的例子或者配置?
Steven.Lee:
回复 Viki Shi:
我用的元件是非标准I2C总线,不能使用标准的方式。。。所以有没有模拟I2C的例子或者配置?
Steven.Lee:
回复 da qin zheng sheng:
我写的IO配置对吗?
Steven.Lee:
回复 da qin zheng sheng:
我的IO配置对吗?你又没有相关的代码?贴出来呗?
Viki Shi:
回复 Steven.Lee:
模拟的话,建议使用sensor controller,可以模拟I2C。这边有个bitbang的例子: e2e.ti.com/…/638783
Loops:
因为你没有写清楚问题到底是什么,出错在哪里。
1。你需要的I2C速度多少? 因为GPIO软件控制速率由要求?
2。你初始化好后,能正常的控制CLK输出高低的时钟?
3。有了时钟,配套的写数据就好了。