完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,我正在尝试通过 i2c 将包含数据(数字)的数组发送到另一个微控制器(stm)
我有 NPX 给出的以下示例代码: /**************************************************** ****************************/ /* 文件名:i2c_Z4_1.c COPYRIGHT (c) NXP Semiconductors 2016 */ / * All Rights Reserved */ /* PLATFORM: DEVKIT-MPC5748G */ /* DESCRIPtiON: Initializes the I2C_1 in master mode and I2C_2 in slave mode*/ / * Master 发送地址和数据,Slave 接收两者 */ / * 地址和数据*/ /* 通过上拉寄存器 (10k) 为 */ /* SCL 和 SDA 线提供 3.3V 的上拉电压 */ /* I2C_1 I2C_2 */ /* SCL: PE0: J4_16 SCL: PE9: J2_8 */ /* SDA: PE1: J4_14 SDA: PE8: J2_6 */ /*************************************** ***********************************************/ /* 作者日期变更说明 */ /* --- ------------ ------------ -------------------- */ / * 1.0 K Shah 2016 年 3 月 31 日初始工作版本 */ /* */ /************************************ ***********************************************/ #include "derivative.h" /* 包括外设声明 */ #include "project.h" #include "mode.h" #include "i2c.h" #define KEY_VALUE1 0x5AF0ul #define KEY_VALUE2 0xA50Ful 外部无效 xcptn_xmpl(无效); void peri_clock_gating(void); /* 配置门控/启用外设 (I2C) 时钟 */ void hw_init(void) { #if defined(DEBUG_SECONDARY_CORES) uint32_t mctl = MC_ME.MCTL.R; #if defined(TURN_ON_CPU1) /* 在所有模式下启用核心 1 */ MC_ME.CCTL[2].R = 0x00FE; /* 设置内核 1 的起始地址:将重置并启动 */ MC_ME.CADDR[2].R = 0x11d0000 | 0x1; #endif #if defined(TURN_ON_CPU2) /* 在所有模式下启用核心 2 */ MC_ME.CCTL[3].R = 0x00FE; /* 设置内核 2 的起始地址:将重置并启动 */ MC_ME.CADDR[3].R = 0x13a0000 | 0x1; #endif MC_ME.MCTL.R = (mctl & 0xffff0000ul) | KEY_VALUE1; MC_ME.MCTL.R = mctl; /* 键值 2 总是来自 MCTL */ #endif /* defined(DEBUG_SECONDARY_CORES) */ } /************************************ 主要的 ************ ************************/ __attribute__ ((section(".text"))) int main(void) { uint8_t 数据; xcptn_xmpl(); /* 配置和启用中断 */ peri_clock_gating(); /* 配置门控/启用外设 (I2C) 时钟 */ /* 设置时钟分频器 = 最大频率, 调用 PLL_160MHz 函数,该函数: MC_ME.ME:为模式输入模块启用所有模式 将 XOSC 连接到 PLL PLLDIG:LOLIE=1,PLLCAL3= 0x09C3_C000,无 sigma delta,160MHz MC_ME.DRUN_MC:配置 sysclk = PLL 模式转换:重新进入激活 PLL=sysclk & peri clks 的 DRUN */ initI2C_1(); /* I2C1 模块配置为主机并处于发送模式 */ initI2C_2(); /* I2C2 模块配置为从设备并处于接收模式 */ /* 发送地址 */ transmit_addr_master_I2C_1(0x01); 数据 = receive_slave_I2C_2(); 如果(数据 == 1) { SIUL2.MSCR[PA10].B.OBE = 1;/* 垫 PA10 (10): OBE=1。EVB 低电平有效 DS4 LED */ } while(1) { transmit_data_master_I2C_1('H'); 数据 = receive_slave_I2C_2(); 如果(数据=='H') { SIUL2.MSCR[PA10].B.OBE ^= 1; /* Pad PA10 (10): OBE=OBE xor 1. EVB 低电平有效 DS4 LED */ data = 0; } } 返回 0; } /********************* 主要内容结束 ************************** *************/ void peri_clock_gating() { /* 配置门控/启用外设 (I2C) 时钟 */ MC_ME.RUN_PC[0].R = 0x00000000; /* 所有 RUN 模式的门关闭时钟 */ MC_ME.RUN_PC[1].R = 0x000000FE; /* 为所有 RUN 模式配置外设时钟 */ MC_ME.PCTL[31].B.RUN_CFG = 0x1; /* I2C_1:选择外设配置 RUN_PC[1] */ MC_ME.PCTL[32].B.RUN_CFG = 0x1; /* I2C_2:选择外设配置 RUN_PC[1] */ } 我应该在哪里写我的数组以便我可以发送它? 请帮助我解释我应该将数组存储在 i2c 数据框中的什么位置。 |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
1935个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36428 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
4990 浏览 1 评论
6114 浏览 1 评论
6821 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4253 浏览 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-27 16:23 , Processed in 1.166198 second(s), Total 74, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号