完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我用带 i2c 接口的 S32K144EVB 板进行测试,发现 i2c sck 信号很弱
还有我发送了3个数据,但是好像只发送了两个数据,而且数据不正确 我用的是演示代码,做了一些修改,你能帮忙看看吗,附件是源代码。 /* 数据传输大小的定义 */ #define 传输大小 (3u) /*! brief 项目的主要功能。 details 启动初始化顺序如下: * - __start(启动 asm 例程) * - __init_hardware() * - 主要的() * - PE_low_level_init() * - Common_Init() * - 外围设备初始化() */ 无效 i2c_test() { 整数计数 = 0; 诠释我; uint8_t 缓冲区[TRANSFER_SIZE]; 而(1) { 如果(计数 > 1000) { 计数 = 0; } 如果(计数 == 0) { /* 初始化数据缓冲区 */ 对于 (i = 0u; i < TRANSFER_SIZE; i++) { 缓冲区 = 0x55; } /* 发送一包数据给总线slave */ LPI2C_DRV_MasterSendDataBlocking(INST_LPI2C1,缓冲区,TRANSFER_SIZE,真,OSIF_WAIT_FOREVER); /* 清空缓冲区,为下一次操作做准备 */ 对于 (i = 0u; i < TRANSFER_SIZE; i++) { 缓冲器 = 0u; } /* 从总线从机请求数据 */ LPI2C_DRV_MasterReceiveDataBlocking(INST_LPI2C1,缓冲区,TRANSFER_SIZE,真,OSIF_WAIT_FOREVER); } 计数++; } } int main(void) { /* 为 LPI2C 驱动程序状态结构分配内存 */ lpi2c_master_state_t lpi2c1MasterState; /* LPI2C 传输缓冲区声明 */ uint8_t buffer[TRANSFER_SIZE]; /* 用于初始化数据缓冲区的循环的变量 */ uint16_t i; /*** Processor Expert 内部初始化。不要删除此代码!!!***/ #ifdef PEX_RTOS_INIT PEX_RTOS_INIT(); /* 所选 RTOS 的初始化。宏由 RTOS 组件定义。*/ #endif /*** Processor Expert 内部初始化结束。***/ /* 初始化和配置时钟 * - 配置系统时钟和分频器 * - 配置 LPI2C 时钟门控 * - 有关详细信息,请参阅时钟管理器组件 * / CLOCK_SYS_UpdateConfiguration(0U,CLOCK_MANAGER_POLICY_AGREEMENT); /* 初始化引脚 * - 配置 LPI2C 引脚 * - 有关详细信息,请参阅 PinSettings 组件 */ PINS_DRV_Init(NUM_OF_CONFIGURED_PINS, g_pin_mux_InitConfigArr); /* 初始化 LPI2C 主机配置 * - 从机地址 0x01 * - 快速运行模式,400 KHz SCL 频率 * - 有关配置详细信息,请参阅 LPI2C 组件 */ LPI2C_DRV_MasterInit(INST_LPI2C1, &lpi2c1_MasterConfig0, &lpi2c1MasterState); i2c_test(); while(1) { /* 初始化数据缓冲区 */ for (i = 0u; i < TRANSFER_SIZE; i++) { buffer = 0x55; } /* 向总线从机发送一个数据包 */ LPI2C_DRV_MasterSendDataBlocking(INST_LPI2C1, buffer, TRANSFER_SIZE, true, OSIF_WAIT_FOREVER); /* 清除缓冲区为下一次操作做准备 */ for (i = 0u; i < TRANSFER_SIZE; i++) { buffer = 0u; } /* 从总线从机请求数据 */ LPI2C_DRV_MasterReceiveDataBlocking(INST_LPI2C1, buffer, TRANSFER_SIZE, true, OSIF_WAIT_FOREVER); } /* 驱动示例结束 */ /*** 不要写任何经过这一行的代码,否则它会在代码生成时被删除。***/ /*** RTOS 启动代码。宏 PEX_RTOS_START 由 RTOS 组件定义。不要修改此代码!!!***/ #ifdef PEX_RTOS_START PEX_RTOS_START(); /* 启动选定的 RTOS。宏由 RTOS 组件定义。*/ #endif /*** RTOS 启动代码结束。***/ /*** Processor Expert 主例程结束。不要修改此代码!!!***/ for(;;) { if(exit_code != 0) { 中断; } } 返回退出代码; /*** Processor Expert 主例程结束。不要在下面写代码!!!***/ } /*** 主程序结束。不要修改此文本!!!***/ |
|
相关推荐
1个回答
|
|
i2c sck信号很弱的原因可能是电缆质量不好或者i2c控制器的输出电平不足。你可以尝试使用更好的电缆或者增强输出电平的方法来解决这个问题。
关于数据传输不正确的问题,可能是由于你修改了演示代码造成的,你需要仔细检查代码的逻辑和操作是否正确,并保证数据格式和长度是正确的。另外,你也可以使用示波器或逻辑分析仪来观察i2c信号以及数据传输的情况,帮助你更好地解决问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
1935个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36430 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
5016 浏览 1 评论
6115 浏览 1 评论
6822 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4254 浏览 0 评论
655浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
646浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
647浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
737浏览 2评论
850浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 12:42 , Processed in 1.270034 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号