This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:TI-RTOS
您好!
我将 TM4C123GH6PM 控制器与 TI-RTOS 搭配使用、用于 Tiva C v:2.16.00.08。 我需要与支持 I2C 作为从设备(Addr :0x54)的 Pixy Cam5通信。
我介绍了 TI-RTOS SDK 中的 I2C 示例、该示例通过 CCS 下载。
每当我运行代码时、它都会进入 IDLE 模式。 我使用断点进行了检查、并使用"步入"按钮来执行每个步骤。 在 taskFxn fucnion 中、它应该在 while 循环内执行、但在此之前它将进入空闲模式。
我无法获取启用了哪个 I2C。 因此、我反复连接到0-3个 I2C 端口、没有一个端口工作正常。
我已经附加了我为摄像机创建的主函数和额外头文件。
e2e.ti.com/.../5047.i2ctmp006.ce2e.ti.com/.../8662.pixy_5F00_header.h
关于摄像机:-
PIXY 凸轮可以识别多达7种颜色、我们可以从 PixyMon 应用程序中配置这些颜色。 因此、通过使用它们的 API、我们可以确定哪种颜色。 当使用 I2C 时、我们不必从特定寄存器中读取、在发送读取命令时、Pixy 将写入识别的所有颜色。
www.cmucam.org/.../Porting_Guide
您能帮我解决这个问题吗?
您好!
在哪里构建 taskFxn_1 (UArg0、UArgarg1)线程? 您使用的所有任务的优先级是什么? 如果您使用多个任务、请保持 taskFxn 的最高优先级、然后重试。 检查逻辑分析仪上接收到的数据或其他数据。 此外、在 while 循环中添加所需的最小延迟(取决于从站)。
此致、
Digvijay
[引用 user="Digvijay khambe">您在哪里构建 taskFxn_1() ... 所有任务的优先级是什么 ... 如果使用多个任务,请将 taskFxn 的优先级保持在最高 ... 在逻辑分析仪上检查接收到的数据... 添加所需的最小延迟。[/quot]
很棒的建议! 很高兴看到您:"平衡延迟"-通过帮助"其他人"-随着您继续"进一步成长/发展"! 注意: “帮助他人——所以经常建立(你)理解和分析— —非常幸运…… 以及最 "有用的结果"。
供应商/朋友 Charles 写道: "在 转向复杂的事情 (即"调用 复杂的函数")之前、先尝试对其进行调整。 尝试 先发送一些简单的数据。" 他也证明了非常正确的指导,但不能 用“ 一个词……”代替“大约30个(总是充满努力)的文字描述”。 “吻!” (这证明更 容易记住、指导和有效)
您好、Charles、
我能够对现有程序进行更改。 但我不知道在 Board_initI2C()函数调用期间初始化了哪个 I2C 引脚。
你(们)好
[引用 user="Vishnu sathesesh"]但我不知道在 Board_initI2C ();函数调用期间初始化了哪个 I2C 引脚。
要了解 PIN 配置、您必须浏览以下三个文件
1.Board.h
2.EK_TM4C1294XL.h
3.EK_TM4C1294XL.c
以下是 与 EK_TM4C1294XL.c 文件中 i2c 的 PIN 配置相关的代码、该文件与我的项目相关。
/*
* ========================================= I2C ================================================
*
/*放入子段以允许 TI 链接器正确删除项目*/
#if defined (__TI_Compiler_version__)
#pragma DATA_SECTION (I2C_CONFIG、".CONST:I2C_CONFIG")
#pragma DATA_SECTION (i2cTivaHWAttrs、".const:i2cTivaHWAttrs")
#endif
#include
#include
I2CTIVA_Object i2cTivaObjects[EK_TM4C1294XL_I2CCOUNT;
CONST I2CTIVA_HWAttrs i2cTivaHWAttrs[EK_TM4C1294XL_I2CCOUNT ={
{
baseAddr = I2C2_base、
.intNum = INT_I2C2、
.intPriority =(~0)
}、
{
baseAddr = I2C8_BASE、
.intNum = INT_I2C8、
.intPriority =(~0)
}
};
const I2C_Config I2C_CONFIG[]={
{
fxnTablePtr =&I2CTiva_fxnTable、
.object =&i2cTivaObjects[0]、
hwAttrs =&i2cTivaHWAttrs[0]
}、
{
fxnTablePtr =&I2CTiva_fxnTable、
.object =&i2cTivaObjects[1]、
hwAttrs =&i2cTivaHWAttrs[1]
}、
{NULL、NULL、NULL}
};
/*
* ==== EK_TM4C1294XL_initI2C ===
*
void EK_TM4C1294XL_initI2C (void)
{
/* I2C7初始化*/
/*
*注意:TI-RTOS 示例为 SSI2或 I2C7配置引脚 PD0和 PD1。 因此、
*在中同时使用 I2C 和 SPI 驱动程序时会发生冲突
*应用程序。 修改此文件中的引脚多路复用设置并解析
*运行应用程序前发生冲突。
*
/*启用外设*/
SysCtlPeripheralEnable (SYSCTL_Periph_I2C2);
/*将相应的引脚配置为 I2C 而不是 GPIO。 *
GPIOPinConfigure (GPIO_PN5_I2C2SCL);
GPIOPinConfigure (GPIO_PL0_I2C2SDA);
GPIOPinTypeI2CSCL (GPIO_PORTN_BASE、GPIO_PIN_5);
GPIOPinTypeI2C (GPIO_PORTL_BASE、GPIO_PIN_0);
// ///* I2C8初始化*/
// /*启用外设*/
// SysCtlPeripheralEnable (SYSCTL_Periph_I2C8);
//
// //////*将相应的引脚配置为 I2C 而不是 GPIO。 *
// GPIOPinConfigure (GPIO_PA2_I2C8SCL);
// GPIOPinConfigure (GPIO_PA3_I2C8SDA);
// GPIOPinTypeI2CSCL (GPIO_Porta_base、GPIO_PIN_2);
// GPIOPinTypeI2C (GPIO_Porta_base、GPIO_PIN_3);
I2C_init();
}
此致、
Digvijay