Multi Source Translation Content

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Multi Source Translation Content

讨论

排序依据:
交互式内核配置 评估板:i.MX 8M Plus EVK (imx8mpevk) 主机:Ubuntu 22.04.5 LTS 我安装了 yocto 项目:6.6.52-2.2.1 版本 使用: $: mkdir ~/bin $: curlhttp://commondatastorage.googleapis.com/git-repo-downloads/repo> ~/bin/仓库 $: chmod a+x ~/bin/仓库 $: PATH=${PATH}:~/bin 然后: $: mkdir 6.6.52-2.2.1 $: cd 6.6.52-2.2.1 $: 仓库 init -u https://github.com/nxp-imx/imx-manifest-b imx-linux-scarthgap -m imx-6.6.52-2.2.1.xml $: 仓库同步 然后: $: machine=imx8mpeVK distro=fsl-imx-xwayland 来源。/imx-setup-release.sh-b bld-xwayland $: bitbake imx-image-full 然后使用 UUU 工具成功闪存到 imx8mpevk 我发现没有安装 WIFI 驱动程序。 AW-CM276MA (NXP 88W8997):Wi-Fi® 5 (802.11ac) 2 x 2 双频(2.4/5 GHz)和蓝牙® 5.1 因此,我正试图使用"...... "来安装它们: bitbake linux-imx -c menuconfig 我找到了驱动程序并启用了它们,还保存了 .config使用图形用户界面工具(见附图)。但是,我不知道如何应用这些更改并烘焙新图像。 我正在努力 RM00293 i.MX Linux 参考手册 修订版 LF6.12.20_2.0.0 — 2025 年 6 月 26 日 但这真的很让人困惑,如果能得到任何帮助,我将不胜感激 Re: Interactive kernel configuration 完整图像的 WiFi 驱动程序应该已经包含在内。有关如何启动 WiFi,请参阅UM11483。 驱动程序的路径应该如下 ./usr/lib/modules/6.12.3-lts-next-g37d02f4dcbbe/updates/moal.ko 至于如何申请,请参阅<2.1.2 部分。如何在移植指南的 Yocto Project > 中版本和加载内核 此致 哈维   Re: Interactive kernel configuration 你好 你可以通过显示如何在他们的板上配置内核的 variscite 查看这个链接。对你来说,区别应该只是层名称,但基线是: 更改后,运行 bitbake -c savedefconfig virtual/kernel​ 以 defconfig 格式保存更改 找到包含 linux 内核的层,应该是 meta-imx-bsp/recipes-kernel/linux 在其中创建一个文件目录 将 defconfig 复制到文件目录 创建 .bbappend文件,该文件指向 defconfig
查看全文
IMX8QM のセカンダリ ブート コンテナ セット IMX8QM でセカンダリ ブート コンテナー セットを使用しようとしています。ブート デバイス上のセカンダリ ブート コンテナー セットのオフセット ポジショニングを確認するにはどうすればよいでしょうか?ブートデバイスは eMMC です。また、起動中にセカンダリ ブート コンテナー セットを使用するにはどうすればよいですか?
查看全文
自定义 lx2160 板中的 i2c 总线问题 你好, 我在两条 i2c 总线 I2C3 和 I2C4 上遇到了一个问题,我无法执行任何 i2c 交易。我已经在设备树中启用了两个 i2c。还是没法把总线开上去。谁能帮帮我?我附上了我的设备树和 i2c 交易的结果。 LX2160A-RDB QorIQ LS2 设备 Re: i2c bus issue in custom lx2160 board 你好,Oswalag, ,我已经修改了 RCW 文件,现在 i2c 已经启动。感谢你们的支持。我将在此附上更新后的 rcw 文件内容。 Re: i2c bus issue in custom lx2160 board 还请检查一下您的 RCW,在您分享的最后一个文件中有一个错误 将这些字段用作 IIC 时,其值为 0b000。 Re: i2c bus issue in custom lx2160 board 你好, 但我正在修改和使用来自 /HOME/bs-user01/5gbbpc/flexbuild_lsdk2108_github/components/linux/linux/arch/arm64/boot/DTS/Freescale 中的设备树 Re: i2c bus issue in custom lx2160 board 您的问题可能与您的 dts 配置有关,请仔细检查并只包含您正在使用的配置。 您的日志中有警告:错误:设备树无效 请使用 LX2160ARDB 的那个作为参考: https://github.com/nxp-qoriq/u-boot/blob/lf_v2024.04/arch/arm/dts/fsl-lx2160a-rdb.dts Re: i2c bus issue in custom lx2160 board 您好, 我创建了自己的自定义 rcw 文件。敬请查看 . Re: i2c bus issue in custom lx2160 board 您好 , 对不起,我分享了错误的 rcw 文件。 在此附上正确的 RCW Re: i2c bus issue in custom lx2160 board 我也在共享 rcw 文件 Re: i2c bus issue in custom lx2160 board 你好 Oswalag, 我正在向你分享 uboot 和内核的启动日志。请看一看。我们使用的是带有 flexbuilder 的 NXP LSDK 21.08。 Re: i2c bus issue in custom lx2160 board 你好 请共享您正在使用的 RCW 配置,还要先在 u-启动 上测试 I2C,然后在 .txt 中共享完整的日志文件格式。 你在使用电路板支持包吗?什么版本?
查看全文
S32K344 安全启动 HSE_verifyBootImage 问题 您好, 问题描述 我们正在使用恩智浦演示示例测试 S32K344 安全启动。 使用 S32K344_SecureBootBlinky 演示项目,我们生成应用程序 .bin锉刀 然后,我们使用 S32K344_Basic_SecureBoot 演示项目运行 HSE_VerifyBootImage()。 首次运行 HSE_VerifyBootImage()成功:验证正常。 但是,当第二次执行相同代码时,API 返回: HSE_SRV_RSP_GENERAL_ERROR 返回代码 = 0x33d6d4f1 问题 这种行为的根本原因是什么? 为什么第一次验证成功了,而第二次验证却失败了,出现了一般性错误? 连续多次调用 HSE_VerifyBootImage( 有没有限制? 恩智浦是否提供完整的 Basic_secureBoot 演示代码(不仅仅是 hse_verifyBootimage ()),还包括从 AppBL 流程启动? 环境 演示代码包:s32k3_HSE_demoExamples_1_0_ 0 目标 MCU:S32K344 感谢您的帮助。 顺祝商祺! Mark Re: S32K344 Secure Boot HSE_VerifyBootImage issue 我确信这样的代码可以工作: PFLASH_Unlock(PFLASH_BL0, PFLASH_SS0, PFLASH_S0); status = FLASH_EraseSector(0x400000); status = FLASH_Write (0x400000, data, sizeof(data)); 不过,正如我之前所写,代码必须从另一个闪存块或 RAM 运行。例如,如何移动一个触发信号闪存操作并等待命令完成的函数的一个选项是将其移至数据闪存块。您可以像这样在 linker 文件的 dflash 中创建自己的部分: .dflash_code_section : { *(.dflash_code_section) } > DFLASH 然后在 flash.c 中的 FLASH_ExecSeq() 函数前添加该属性: __attribute__((section(".dflash_code_section"))) tFLASH_STATUS FLASH_ExecSeq (register uint32_t mask) 这将迫使功能进入数据闪存。 然后请注意,FLASH_EraseSector() 将擦除 8KB 闪存。如果有你的代码(在默认的 S32K344_Basic_SecureBoot 示例中确实有),那么它将在 FLASH_ExecSeq() 返回后运行,因为你删除了你的代码。解决方法:移动代码,使其从下一个 8KB 扇区开始。第一区只保留 IVT。 问候, Lukas Re: S32K344 Secure Boot HSE_VerifyBootImage issue 你好,卢卡斯、 环境 演示代码软件包:s32K3_HSE_demoExamples_1_0_0 示例项目:s32k344_basic_secureBoot 我想擦掉 IVT 地址 (0x400000) 然后用 28 字节(IV + GMAC)对新 I VT 进行编程。 在这个项目中,我不知道如何将地址从 0x400000 删除到 0x4000100。 我使用了下面的代码并检查了内存。Erase 不起作用。 pFlash_unlock (PFLASH_BL0、PFLASH_SS0、PFLASH_S0);状态 = Flash_eraseBlock (PiVT); flash_Write () 功能后出现异常错误。 你能不能向我提供一些可以删除 这个项目中可以运行的地址 (0x400000) 的示例代码,我真的需要一个示例代码来证明 OTA 或安全启动可以在这个 S32K344 EVB 中运行。 感谢您的支持。 顺祝商祺! 马克     Re: S32K344 Secure Boot HSE_VerifyBootImage issue 1.您遇到了哪种错误? 2.代码从哪里运行?请注意,"边读边写 "仅在块之间支持。如果在 0 块上运行闪存操作,则必须从其他块或 RAM 执行代码。 3.你真的想删除整个区块吗?该命令(status = FLASH_EraseBlock(pIVT);)将擦除整个 0x40_0000 - 0x4F_FFFF 区域: 此致, Lukas Re: S32K344 Secure Boot HSE_VerifyBootImage issue 你好,卢卡斯、 非常感谢你们的帮助。事实上,我不知道如何禁用数据缓存,但我把 IVT_temp 移到了全局变量中,然后 HSE_SignBootImage() 函数返回成功。 但是,我现在遇到了另一个问题:我无法擦除从 0x400000 开始的闪存地址,而这正是 IVT 所在的位置。我按照 AppBL 的示例擦除和编程顺序进行了操作,只更改了地址,但在尝试擦除闪存时出现了错误。 下面是代码片段: (void)memcpy( & IVT_temp, (const void *)BLOCK0_BASE_ADDRESS, IVT_FIXED_LENGTH); srvResponse = HSE_SignBootImage((uint8_t *)&IVT_temp,BOOT_IMG_TAG_LEN,temp_addr_of_ivt_image); ASSERT(HSE_SRV_RSP_OK == srvResponse); ///* 将生成的 TAG 写入 FLASH 中 IVT 的末尾 */ PFLASH_Unlock(PFLASH_BL0,PFLASH_SS0,PFLASH_S0); status = FLASH_EraseBlock(pIVT); status = FLASH_Write( pIVT, & IVT_temp, IVT_FIXED_LENGTH); 您对如何清除 IVT 地址(0x400000)有什么建议或指导吗? 提前感谢您的支持。 顺祝商祺! Mark Re: S32K344 Secure Boot HSE_VerifyBootImage issue 你好@马克-范 好的,您正在尝试签署 IVT。您的代码是正确的,没有问题。我也在我的板上执行了它,它起作用了。该代码成功生成了 IV 和 GMAC。 这不是数据缓存问题吗?IVT_temp 是否在非高速缓存 SRAM 中?如果 DTCM 内存中有堆栈,则不要将堆栈中的数据用于 HSE 服务。HSE 无法在正常地址看到 DTCM,HSE(和其他总线管理器)只能看到 DTCM 的后门地址。 为了快速测试,请尝试完全禁用数据缓存。 此致, Lukas Re: S32K344 Secure Boot HSE_VerifyBootImage issue 你好,卢卡斯、 谢谢您的帮助。我实现了 RESET 功能,它运行良好。 但是,我注意到,在 S32K344_Basic_SecureBoot 演示项目中,IVT 似乎并没有对所有 28 字节(IV + GMAC)进行编程。我曾尝试自己实现该函数,但从 HSE_SignBootImage() 收到了 HSE_SRV_RSP_INVALID_PARAM 返回代码。 以下是我使用的代码: uint8_t temp_addr_of_ivt_image[28] = {0xFF}; (void)memcpy( & IVT_temp, (const void *)BLOCK0_BASE_ADDRESS, IVT_FIXED_LENGTH ); srvResponse = HSE_SignBootImage( (uint8_t *)&IVT_temp, BOOT_IMG_TAG_LEN, temp_addr_of_ivt_image ); 能否请您帮我检查一下我的代码或使用 HSE_SignBootImage() 的方法是否有问题? 谢谢! 致以最诚挚的问候, Mark              Re: S32K344 Secure Boot HSE_VerifyBootImage issue 是的,所有 28 字节都需要编程到闪存中。 RESET 可以由调试器或设备上运行的软件触发。 如果您有 Trace32,可以使用所附脚本。 脚本正在写入 MC_ME 寄存器: -MODE_CONF 设置 FUNC_RST 位以触发功能 RESET(您可以使用 DEST_RST 进行破坏性 RESET) - MODE_UPD 设置 UPD 位 -CTL_KEY 写入密钥,反向键开始模式过渡到 RESET 状态   如果使用不同的调试器,只需在调试器中执行相同的顺序即可。 如果您想通过软件触发信号 RESET,只需在软件中实现此功能即可。   此致, Lukas Re: S32K344 Secure Boot HSE_VerifyBootImage issue 你好,卢卡斯、 感谢您的答复。 我需要在 IVT 之后对所有 28 字节(IV + GMAC)进行编程吗? 我的 EVB (S32K344 BMU) 没有 RESET 引脚。有触发 MCU RESET 的简单方法吗? 顺祝商祺! Mark Re: S32K344 Secure Boot HSE_VerifyBootImage issue 你好@马克-范 没有任何限制,您可以多次调用 HSE_VerifyBootImage。它在我这边起作用。 示例 S32K344_Basic_SecureBoot 是一个完整的示例。该项目已经在启动配置词中设置了 BOOT_SEQ,因此从一开始就启用了安全启动: 当你第一次加载项目时,调试器会在入口点手动设置程序计数器 " "(即启动头文件和 BOOT_SEQ 现在没有效果)。因此,S32K344_Basic_SecureBoot 项目被执行。它执行安全启动的配置。下次 RESET 后,如果安全启动成功,将执行 S32K344_SecureBootBlinky。如果没有,它将进入 JTAG 恢复模式。要再次执行 S32K344_Basic_SecureBoot,必须将 BOOT_SEQ 更改为 1。 另一种选择是保留 BOOT_SEQ 0,然后在要开启安全启动时在闪存中手动进行更改。 此致, Lukas
查看全文
nfclib 在 PN5190 上使用简化 api 读取标签 您好, 我正在从头开始为我们的设备开发新固件,所以我无法访问原始资源,目前我正在开发 PN5190 前端但我无法读取任何卡,到目前为止我已经将库移植到了 esp32 我可以检索芯片的版本并读取/写入任何寄存器所以通信看起来还可以,IRQ 似乎也能正常工作,我采取的步骤是: 1-init 简化 API(包括 SPI 总线、nfclib、OSAL(未使用操作系统)和通过 NFClib 配置引脚) 2-配置我要使用的技术,并调用简化的 api 演示 问题出现在我调用 dwStatus = phnfClib_Activate ( wT echnologyMask , & PeerInfo , N ULL )的时候;无论现场是否有兼容卡或者什么都没有,这个函数都会返回 PH_NFCLIB_STATUS_PEER_ACTIVATION_FAILED,但是我能检测到该字段正在生成(需要时可以关闭)。 我还测试了 LPCD 示例,我能够输入 SW LPCD 然后设备就会检测到卡的存在,看来我在读卡时错过了一些小步骤,谁能指出缺少了什么?(可能需要先校准或者需要更改某些寄存器 ) PN5190 预先致谢。 Re: nfclib reading a tag using simplified api on PN5190 嗨,爱德华多, 我终于找到了问题所在,它与 phDriver_Timer.c 中的定时器端口问题有关。在函数 phStatus_t phDriver_TimerStop(void)中要求停止单次定时器时,不知何故导致 nfclib 出现内部问题,但没有显示错误,现在读取正常。 Re: nfclib reading a tag using simplified api on PN5190 您好, 请看看 PN5190 NFC读取器库中的 nfcrdlib_SimplifiedAPI_ISO 示例项目,你可以将其用作实现的参考。该演示主要初始化 OSAL、配置 SPI 接口、初始化库并启动简化 API 演示线程,该线程首先将激活我的配置为 ISO,然后执行卡片激活 (phnfclib_Activate)。请使用此演示作为参考。 能否请您确认已根据AN11019《天线设计指南》为您的定制设计进行了适当的天线匹配和调谐? Eduardo。 Re: nfclib reading a tag using simplified api on PN5190 你好@EduardoZamora 我知道恩智浦只支持恩智浦生态系统,但我认为我的问题与库的使用有关,而不是移植平台。既然我可以与芯片通信,引脚可以配置,中断也可以工作,我想基本的端口已经完成了(我是否遗漏了什么?),我的问题与使用/配置库或芯片时遗漏的步骤有关。在 nfclib 提供的示例中,它似乎打算不经任何配置就直接运行。 我已经使用icode slix和mifare经典卡测试了该设备,两者的结果相同(无法激活卡),该设备使用了自定义 PCB,但是在早期开发期间使用了 PNEV5190BP 开发板来测试功能。事实上,该产品已投入生产,但我被要求在不使用旧固件的情况下,从头开始做一个新的更新,而原来的开发人员已经不在了。 关于LPCD演示示例,此功能旨在在由于存在卡(或对象)而修改字段时唤醒设备,但它不会尝试连接或读取卡(本来不打算这样做)。 先行致谢。 Re: nfclib reading a tag using simplified api on PN5190 你好@Saydev 希望你一切顺利。 请注意,我们的支持仅限于使用我们的 NFC读取器库和我们产品组合中支持的 MCU,将该库移植到第三方平台超出了我们的范围。 只是为了确认一下,你在使用我们的 PNEV5190BP 开发板,还是基于这个前端的定制开发板? 您要使用的是什么卡?当您提到 LPCD 示例能够检测到卡的存在时,这是否意味着您也可以通过该演示激活卡并与之通信? 要了解必须修改库的哪些部分才能与其他微控制器一起使用,我将向您推荐以下指南:NFC读取器库移植 FRDM_K64F、使用NFC读取器库和LPC55S69以及NFC读取器库移植到 i.MX RT1050-恩智浦社区,并确保在移植到设置中使用的微控制器时遵循类似的流程。 Eduardo。
查看全文
S32DSライセンスの更新 こんにちは。S32DS ライセンスの有効期限が切れそうですが、どうすれば更新CANますか?アクティベーションコード: 5361-52DF-167C-F6B9 Re: S32DS license update ピーター様 動作しています。ありがとうございます! よろしくお願いします、 イーウェイ Re: S32DS license update こんにちは、 ライセンスが延長されました。 よろしくお願いいたします。 ピーター Re: S32DS license update ピーター様 私の S32DS は「S32 Design Studio for Arm」で、バージョンは 2.2 です。 よろしくお願いします! イーウェイ Re: S32DS license update こんにちは、 ライセンスをリクエストする S32DS の正確なバージョンは何ですか? よろしくお願いいたします。 ピーター Re: S32DS license update こんにちは、 ライセンスの有効期限が切れています。更新してください。よろしくお願いします。 S32 Power Architecture 用 Design Studio v2.1 アクティベーションID: A4E2-CE89-8A37-4B5E 評価日数: 13 機能バージョン: 2.1 機能のステータス: 評価 (13 日間) 回复: S32DS license update こんにちは。私のS32DS v2.2のライセンスの有効期限が間もなく切れます。更新するにはどうすればよいでしょうか?アクティベーションコードは1F6D-7D64-6C38-A53Cです。 延期にご協力をお願いします。ありがとうございます。
查看全文
MKE02z 将 SWD_CLK 用作 GPIO 的问题 你好。 我用 MKE02Z32VLD2(44 引脚)定制了一个 PCB,需要使用 SWD_CLK 和 SWD_DIO 作为 GPIO,它们分别是 PTC4 和 PTA4。 MCU 在上电时停止。如果我不连接 PTC4,单片机就能正常工作,因此我怀疑问题出在上电过程中的瞬态电压上,它在 PTC4 上产生了噪声,然后才用下一段代码启用 PTA4 和 PTC4 作为 GPIO: SIM->SOPT&= ~(uint32_t)SIM_SOPT_SWDE_MASK; MCU 将此解释为连接调试器的尝试失败,因此 MCU 停止运行。 问题是我真的不知道如何解决。在此之前,我在 PTB4 引脚上遇到过类似问题,该引脚默认为 NMI,但我需要将其用作 GPIO。MCU 停止运行,因此我在下一个主题中找到了解决方案: https://community.nxp.com/t5/Kinetis-Microcontrollers/powering-up-issue-on-MKE02Z-GPIO/m-p/544613#M33261 但就我而言,我不知道如何解决这个问题。谁能帮帮我? 谢谢。 Kinetis E系列MCU Re: MKE02z issue using SWD_CLK as GPIO 很高兴听到这个消息。如有任何新问题,欢迎创建新帖。 Re: MKE02z issue using SWD_CLK as GPIO 嗨,塞莱斯特。 正如你所建议的那样,我添加了一个 33k 的下拉电阻,并在启动开始时把代码放到主电阻器里(我把它放在了主界面,而不是一开始的时候),代码在独立组网 (SA) 模式下运行良好。 我已经将 PORT_PUEL[PTCPE4]清零。 非常感谢! 巴勃罗
查看全文
在 Linux 系统下 i.MX8 上 RESET PCIe 设备的方法 我们的 i.MX8QM 使用 PCIe A 和 PCIe B 连接两个 PCIe 网卡。其中,PCIe A 上的网卡工作正常,而 PCIe B 上的 PCIe 网卡在驱动程序初始化过程中偶尔会出现链路训练失败。但是,它可以在每次设备重启后成功完成初始化。由于链路训练失败的可能性很低,我们打算在发生此类故障时RESET PCIe B。RESET完成后,我们将重新加载驱动程序以触发信号设备初始化和链接训练。请与我们联系具体的实现方法。谢谢! Linux Re: Methods to reset PCIe devices on i.MX8 under Linux system 试试这个命令 " echo 1 > /sys/总线/pci/rescan " i
查看全文
SMI-N1949 Kinetis Vシリーズ電力変換ライブラリを使用したデジタル電源の簡易化 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> このセッションでは、最新のKinetis Vマイクロコントローラ、ソフトウェア・ライブラリ、ハードウェア・プラットフォームを使用して、アナログ制御からデジタル制御への飛躍を実現し、長期的な効率と性能の向上を実現する方法をご紹介します。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> このセッションでは、最新のKinetis Vマイクロコントローラ、ソフトウェア・ライブラリ、ハードウェア・プラットフォームを使用して、アナログ制御からデジタル制御への飛躍を実現し、長期的な効率と性能の向上を実現する方法をご紹介します。 スマートマシナリー&インダストリアルオートメーション
查看全文
飞思卡尔通用内容 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 飞思卡尔公司概况 模拟和传感器概述 汽车 MCU AMPG 概述 数字网络概述 i.MX 6系列产品概述 飞思卡尔汽车简介 传感器产品组合介绍 未来互联网 - 解决方案和安全 Kinetis MCU 产品组合概述 安全嵌入式处理概述 单芯片系统模块
查看全文
NXP Zephyr display portability demo This simple demo shows the portability of Zephyr with LVGL by running the same application on different hardware platforms.  Leveraging Zephyr's Hardware Abstraction Layer (HAL), applications can be written without hardware dependencies in the source code.  And without changing source, the same app can be built for different hardware. The demo steps use the following hardware and tools, but can easily run on other hardware with displays using the same general steps: FRDM-MCXN947 board FRDM-RW612 board LCD-PAR-S035 display shield NXP's MCUXpresso extension for VS Code The attached presentation gives a brief overview of Zephyr and the HAL portability.  This video shows all the steps to build the example, prepare the hardware, and program the boards. (view in My Videos) Return to Zephyr Knowledge Hub
查看全文
KW38 Custom Profile This example of custom profile uses the Temperature Sensor and Temperature Collector examples as a base, so it can be easily modified. Both examples are in the SDK, so this document explains how to add the Humidity profile, and how to modify the code to get the Humidity Sensor and Collector working. Introduction Generic Attribute Profile (GATT) establishes in detail how to exchange all profile and user data over a BLE connection. GATT deals only with actual data transfer procedures and formats. All standard BLE profiles are based on GATT and must comply with it to operate correctly. This makes GATT a key section of the BLE specification, because every single item of data relevant to applications and users must be formatted, packed, and sent according to the rules. GATT defines two roles: Server and Client. The GATT server stores the data transported over the Attribute Protocol (ATT) and accepts Attribute Protocol requests, commands and confirmations from the GATT client. The GATT client accesses data on the remote GATT server via read, write, notify, or indicate operations. Notify and indicate operations are enabled by the client but initiated by the server, providing a way to push data to the client. Notifications are unacknowledged, while indications are acknowledged. Notifications are therefore faster, but less reliable.  GATT Database establishes a hierarchy to organize attributes. These are the Profile, Service, Characteristic and Descriptor. Profiles are high level definitions that define how services can be used to enable an application and Services are collections of characteristics. Descriptors defined attributes that describe a characteristic value.  To define a GATT Database several macros are provided by the GATT_DB API in the Freescale BLE Stack, which is part KW38 SDK. Server (Sensor)  First, we need to use the Temperature Sensor project as a base, to create our Humidity Custom Profile Server (Sensor). BLE SIG profiles To know if the Profile or service is already defined in the specification, you have to look for in Bluetooth SIG profiles and check in the ble_sig_defines.h file (${workspace_loc:/${ProjName}/bluetooth/host/interface) if this is already declared in the code. In our case, the service is not declared, but the characteristic of the humidity is declared in the specification. Then, we need to check if the characteristic is already included in ble_sig_defines.h. Since, the characteristic is not included, we need to define it as shown next: /*! Humidity Charactristic UUID */ #define gBleSig_Humidity_d 0x2A6F GATT Database The Humidity Sensor is going to have the GATT Server, because is going to be the device that has all the information for the GATT Client. On the Temperature Sensor demo have the Battery Service and Device Information, so you only have to change the Temperature Service to Humidity Service    In order to create the demo we need to define or develop a service that has to be the same as in the GATT Client, this is declared in the gatt_uuid128.h.If the new service is not the same, they will never be able to communicate each other. All macros, function or structure in SDK have a common template which helps the application to act accordingly. Hence, we need to define this service in the gatt_uuid128.h as shown next:  /* Humidity */ UUID128(uuid_service_humidity, 0xfe ,0x34 ,0x9b ,0x5f ,0x80 ,0x00 ,0x00 ,0x80 ,0x00 ,0x10 ,0x00 ,0x02 ,0x00 ,0xfa ,0x10 ,0x10) All the Service and Characteristics is declared in gattdb.h. Descriptors are declared after the Characteristic Value declaration but before the next Characteristic declaration. In this case the permission is the CharPresFormatDescriptor that have specific description by the standard. The Units of the Humidity Characteristic is on Percentage that is 0x27AD. Client Characteristic Configuration Descriptor (CCCD) is a descriptor where clients write some of the bits to activate Server notifications and/or indications. PRIMARY_SERVICE_UUID128(service_humidity, uuid_service_humidity) CHARACTERISTIC(char_humidity, gBleSig_Humidity_d, (gGattCharPropNotify_c)) VALUE(value_humidity, gBleSig_Humidity_d, (gPermissionNone_c), 2, 0x00, 0x25) DESCRIPTOR(desc_humidity, gBleSig_CharPresFormatDescriptor_d, (gPermissionFlagReadable_c), 7, 0x0E, 0x00, 0xAD, 0x27, 0x00, 0x00, 0x00) CCCD(cccd_humidity) After that, create a folder humidity in the next path ${workspace_loc:/${ProjName}/bluetooth/profiles. Found the temperature folder, copy the temperature_service.c and paste inside of the humidity folder with another name (humidity_service.c). Then go back and look for the interface folder, copy temperature_interface.h and change the name (humidity_interface.h) in the same path. You need to include the path of the created folder. Project properties>C/C+ Build>Settings>Tool Settings>MCU C Compiler>Includes: Humidity Interface The humidity_interface.h file should have the following code. The Service structure has the service handle, and the initialization value. /*! Humidity Service - Configuration */ typedef struct humsConfig_tag { uint16_t serviceHandle; int16_t initialHumidity; } humsConfig_t; /*! Humidity Client - Configuration */ typedef struct humcConfig_tag { uint16_t hService; uint16_t hHumidity; uint16_t hHumCccd; uint16_t hHumDesc; gattDbCharPresFormat_t humFormat; } humcConfig_t; Humidity Service At minimum on humidity_service.c file, should have the following code. The service stores the device identification for the connected client. This value is changed on subscription and non-subscription events. /*! Humidity Service - Subscribed Client*/ static deviceId_t mHums_SubscribedClientId; The initialization of the service is made by calling the start procedure. This function is usually called when the application is initialized. In this case is on the BleApp_Config(). bleResult_t Hums_Start(humsConfig_t *pServiceConfig) { mHums_SubscribedClientId = gInvalidDeviceId_c; /* Set the initial value of the humidity characteristic */ return Hums_RecordHumidityMeasurement(pServiceConfig->serviceHandle, pServiceConfig->initialHumidity); } On stop function, the unsubscribe function is called. bleResult_t Hums_Stop(humsConfig_t *pServiceConfig) { /* Stop functionality by unsubscribing */ return Hums_Unsubscribe(); } bleResult_t Hums_Unsubscribe(void) { /* Unsubscribe by invalidating the client ID */ mHums_SubscribedClientId = gInvalidDeviceId_c; return gBleSuccess_c; } The subscribe function will be used in the main file, to subscribe the GATT client to the Humidity service. bleResult_t Hums_Subscribe(deviceId_t clientDeviceId) { /* Subscribe by saving the client ID */ mHums_SubscribedClientId = clientDeviceId; return gBleSuccess_c; } Depending on the complexity of the service, the API will implement additional functions. For the Humidity Sensor only have a one characteristic. The measurement will be saving on the GATT database and send the notification to the client. This function will need the service handle and the new value as input parameters. bleResult_t Hums_RecordHumidityMeasurement(uint16_t serviceHandle, int16_t humidity) { uint16_t handle; bleResult_t result; bleUuid_t uuid = Uuid16(gBleSig_Humidity_d); /* Get handle of Humidity characteristic */ result = GattDb_FindCharValueHandleInService(serviceHandle, gBleUuidType16_c, &uuid, &handle); if (result != gBleSuccess_c) return result; /* Update characteristic value */ result = GattDb_WriteAttribute(handle, sizeof(uint16_t), (uint8_t*) &humidity); if (result != gBleSuccess_c) return result; Hts_SendHumidityMeasurementNotification(handle); return gBleSuccess_c; } After save the measurement on the GATT database with GattDb_WriteAttribute function we send the notification. To send the notification, first have to get the CCCD and after check if the notification is active, if is active send the notification. static void Hts_SendHumidityMeasurementNotification ( uint16_t handle ) { uint16_t hCccd; bool_t isNotificationActive; /* Get handle of CCCD */ if (GattDb_FindCccdHandleForCharValueHandle(handle, &hCccd) != gBleSuccess_c) return; if (gBleSuccess_c == Gap_CheckNotificationStatus (mHums_SubscribedClientId, hCccd, &isNotificationActive) && TRUE == isNotificationActive) { GattServer_SendNotification(mHums_SubscribedClientId, handle); } } Humidity Sensor Main file There are some modifications that have to be done, to use the new Humidity profile in our sensor example. First, we need to declare the humidity service: static humsConfig_t humsServiceConfig = {(uint16_t)service_humidity, 0}; Then, we need to add or modify the following functions: BleApp_Start You need to modify this line: /* Device is connected, send humidity value */ BleApp_SendHumidity(); BleApp_Config You need to start the Humidity Service, and to modify the PrintString line: humsServiceConfig.initialHumidity = 0; (void)Hums_Start(&humsServiceConfig); AppPrintString("\r\nHumidity sensor -> Press switch to start advertising.\r\n"); BleApp_ConnectionCallback There are some modifications required in two Connection Events. gConnEvtConnected_c (void)Hums_Subscribe(peerDeviceId); gConnEvtDisconnected_c gConnEvtDisconnected_c (void)Hums_Unsubscribe(); BleApp_GattServerCallback /* Notify the humidity value when CCCD is written */ BleApp_SendHumidity() BleApp_SendHumidity And, we need to add this function: static void BleApp_SendHumidity(void) { (void)TMR_StopTimer(appTimerId); /* Update with initial humidity */ (void)Hums_RecordHumidityMeasurement((uint16_t)service_humidity, (int16_t)(BOARD_GetTemperature())); #if defined(cPWR_UsePowerDownMode) && (cPWR_UsePowerDownMode) /* Start Sleep After Data timer */ (void)TMR_StartLowPowerTimer(appTimerId, gTmrLowPowerSecondTimer_c, TmrSeconds(gGoToSleepAfterDataTime_c), DisconnectTimerCallback, NULL); #endif } In this example, the Record Humidity uses the BOARD_GetTemperature, to use the example without any external sensor and to be able to see a change in the collector, but, in this section would be a GetHumidity function. Client (Collector)  First, we need to use the Temperature Collector project as a base, to create our Humidity Custom Profile Client (Collector). BLE SIG profiles The same applies for the Client. To know if the Profile or service is already defined in the specification, you have to look for in Bluetooth SIG profiles and check in the ble_sig_defines.h file (${workspace_loc:/${ProjName}/bluetooth/host/interface) if this is already declared in the code. In our case, the service is not declared, but the characteristic of the humidity is declared in the specification. Then, we need to check if the characteristic is already included in ble_sig_defines.h. Since, the characteristic is not included, we need to define it as shown next: /*! Humidity Charactristic UUID */ #define gBleSig_Humidity_d 0x2A6F GATT Database The Humidity Collector is going to have the GATT client; this is the device that will receive all information from  the GATT server. Demo provided in this post works like the Temperature Collector. When the Collector enables the notifications from the sensor, received notifications will be printed in the serial terminal. In order to create the demo we need to define or develop a service that has to be the same as in the GATT Server, this is declared in the gatt_uuid128.h.If the new service is not the same, they will never be able to communicate each other. All macros, function or structure in SDK have a common template which helps the application to act accordingly. Hence, we need to define this service in the gatt_uuid128.h as shown next: /* Humidity */ UUID128(uuid_service_humidity, 0xfe ,0x34 ,0x9b ,0x5f ,0x80 ,0x00 ,0x00 ,0x80 ,0x00 ,0x10 ,0x00 ,0x02 ,0x00 ,0xfa ,0x10 ,0x10) After that, copy the humidity profile folder from the Sensor project, to the Collector project ${workspace_loc:/${ProjName}/bluetooth/profiles. And also for this project, include the path of the new folder. Project properties>C/C+ Build>Settings>Tool Settings>MCU C Compiler>Includes: Humidity Collector Main file In the Collector source file, we need to do also some modifications, to use the Humidity Profile. First, we need to modify the Custom Information of the Peer device: humcConfig_t humsClientConfig; BleApp_StoreServiceHandles static void BleApp_StoreServiceHandles ( gattService_t *pService ) { uint8_t i,j; if ((pService->uuidType == gBleUuidType128_c) && FLib_MemCmp(pService->uuid.uuid128, uuid_service_humidity, 16)) { /* Found Humidity Service */ mPeerInformation.customInfo.humsClientConfig.hService = pService->startHandle; for (i = 0; i < pService->cNumCharacteristics; i++) { if ((pService->aCharacteristics[i].value.uuidType == gBleUuidType16_c) && (pService->aCharacteristics[i].value.uuid.uuid16 == gBleSig_Humidity_d)) { /* Found Humudity Char */ mPeerInformation.customInfo.humsClientConfig.hHumidity = pService->aCharacteristics[i].value.handle; for (j = 0; j < pService->aCharacteristics[i].cNumDescriptors; j++) { if (pService->aCharacteristics[i].aDescriptors[j].uuidType == gBleUuidType16_c) { switch (pService->aCharacteristics[i].aDescriptors[j].uuid.uuid16) { /* Found Humidity Char Presentation Format Descriptor */ case gBleSig_CharPresFormatDescriptor_d: { mPeerInformation.customInfo.humsClientConfig.hHumDesc = pService->aCharacteristics[i].aDescriptors[j].handle; break; } /* Found Humidity Char CCCD */ case gBleSig_CCCD_d: { mPeerInformation.customInfo.humsClientConfig.hHumCccd = pService->aCharacteristics[i].aDescriptors[j].handle; break; } default: ; /* No action required */ break; } } } } } } } BleApp_StoreDescValues if (pDesc->handle == mPeerInformation.customInfo.humsClientConfig.hHumDesc) { /* Store Humidity format*/ FLib_MemCpy(&mPeerInformation.customInfo.humsClientConfig.humFormat, pDesc->paValue, pDesc->valueLength); } BleApp_PrintHumidity /*www.bluetooth.com/specifications/assigned-numbers/units */ if (mPeerInformation.customInfo.humsClientConfig.humFormat.unitUuid16 == 0x27ADU) { AppPrintString(" %\r\n"); } else { AppPrintString("\r\n"); } BleApp_GattNotificationCallback if (characteristicValueHandle == mPeerInformation.customInfo.humsClientConfig.hHumidity) { BleApp_PrintHumidity(Utils_ExtractTwoByteValue(aValue)); }  CheckScanEvent foundMatch = MatchDataInAdvElementList(&adElement, &uuid_service_humidity, 16); BleApp_StateMachineHandler mAppIdle_c if (mPeerInformation.customInfo.humsClientConfig.hHumidity != gGattDbInvalidHandle_d) mAppServiceDisc_c if (mPeerInformation.customInfo.humsClientConfig.hHumDesc != 0U) mpCharProcBuffer->handle = mPeerInformation.customInfo.humsClientConfig.hHumDesc; mAppReadDescriptor_c if (mPeerInformation.customInfo.humsClientConfig.hHumCccd != 0U) BleApp_ConfigureNotifications mpCharProcBuffer->handle = mPeerInformation.customInfo.humsClientConfig.hHumCccd; Demonstration Now, after connection, every time that you press the SW3 on KW38 Humidity Sensor is going to send the value to KW38 Humidity Collector.   BLE Software KW
查看全文
LS1043A で Aquantia AQR107 をサポートするパッチ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 添付のパッチは、LS1043AでAquantia AQR107をサポートするためのものです。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 添付のパッチは、LS1043AでAquantia AQR107をサポートするためのものです。 QorIQ LS1デバイス Re:LS1043AでAquantia AQR107をサポートするためのパッチ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> どうもありがとうございます!AQC108 イーサネット制御とPCI Expressのデータシートがあります。残念ながら、.uid に関する情報は見つかりません。正しいuidを知るために使用できるキーワードはありますか? Re:LS1043AでAquantia AQR107をサポートするためのパッチ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> パッチの下に追加する必要がありますが、AQR108のデバイスIDがわかりません。 スペックを確認する必要があります。 + +struct phy_driver aqr108_driver = { + .name = "Aquantia AQR108", + .uid = 0x3a1????, <- 仕様を確認する必要があります + .mask = 0xfffffff0、 + .features = PHY_10G_FEATURES、 + .mmds = (MDIO_MMD_PMAPMD |MDIO_MMD_PCS| + MDIO_MMD_PHYXS |MDIO_MMD_AN | + MDIO_MMD_VEND1)、 + .config = &aquantia_config、 + .startup = &aquantia_startup、 + .shutdown = &gen10g_shutdown、 +}; + int phy_aquantia_init(void) { phy_register(&aq1202_driver); phy_register(&aq2104_driver); phy_register(&aqr105_driver); + phy_register(&aqr108_driver);   0を返します。 } Re:LS1043AでAquantia AQR107をサポートするためのパッチ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> LS1043AでAquantia AQR108はサポートされていますか?
查看全文
基于内核 3.0.35 使用 ASRC_P2P 功能时启用 SSI 主模式的补丁适用于 I.MX6DL/DQ SebreSD 板 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 当使用 SSI 从属模式进行 ASRC_P2P 功能( https://community.freescale.com/docs/DOC-95342 )时,转换后的 24 位数据的波形异常(有一些介于 0 和 1 之间的值)。当使用SSI Master Mode时,这些异常数据就会消失。此补丁展示了如何基于 ASRC_P2P 补丁启用 SSI 主模式。 由于 SSI 主模式对 LRCLK 使用固定数据宽度(每个 L 或 R 32 位),并且 ASRC_P2P 不支持 SSI 双 FIFO 模式,因此此补丁不能很好地支持转换后的 16 位数据。 建议: 如果要将音频数据转换为16bit,可以使用SSI Slave Mode;如果要将音频数据转换为24bit,可以使用SSI Master Mode。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 当使用 SSI 从属模式进行 ASRC_P2P 功能( https://community.freescale.com/docs/DOC-95342 )时,转换后的 24 位数据的波形异常(有一些介于 0 和 1 之间的值)。当使用SSI Master Mode时,这些异常数据就会消失。此补丁展示了如何基于 ASRC_P2P 补丁启用 SSI 主模式。 由于 SSI 主模式对 LRCLK 使用固定数据宽度(每个 L 或 R 32 位),并且 ASRC_P2P 不支持 SSI 双 FIFO 模式,因此此补丁不能很好地支持转换后的 16 位数据。 建议: 如果要将音频数据转换为16bit,可以使用SSI Slave Mode;如果要将音频数据转换为24bit,可以使用SSI Master Mode。 回复:基于内核 3.0.35 使用 ASRC_P2P 功能时启用 SSI 主模式的补丁适用于 I.MX6DL/DQ SebreSD 板 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 您能附加或在社区中分享补丁吗? 回复:基于内核 3.0.35 使用 ASRC_P2P 功能时启用 SSI 主模式的补丁适用于 I.MX6DL/DQ SebreSD 板 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 好补丁
查看全文
Community Guidelines Welcome to NXP Community  The NXP Community provides the opportunity for NXP customers, partners, and employees to share ideas, tips, ask, collaborate, and receive input on just about any embedded design topic or technical questions. Our Community will help our customers to innovate and move through the design process quickly and efficiently by using this comprehensive collaboration environment for communication, content creation, sharing ideas, and problem resolution.    Get expert advice from the developer community. The NXP Support teams monitor these forums to provide answers and listen to your feedback. Anyone can read messages, but only registered members on nxp.com can post questions, experiences and/or responses.    Track your progress  Badges: The Badge rewards a member on different types of individual actions or activities. Many badges are easy to earn and are awarded as soon as members start participating. Badges help to identify a specific set of skills that a member brings to the community.   Ranks: A Rank rewards a member for completing multiple, different and often unrelated actions. While a member can achieve multiple badges, a member can hold only one rank at a time. A member’s rank is an indicator of the member’s overall status in the community.  Category Experts: Anyone can be a category expert, so we encourage our members to continue participating and helping others. Experts are based on their participation in specific categories or boards.   Avoid creating duplicate posts:   Before posting a new question or idea we encourage our members to use the global search bar to verify if the question or idea is already posted by another user. In case of finding an existing question or idea, the recommendation is to add a comment in this post letting know the community members that you are also having the same or similar question or idea.     Creating a new post:   When posting a question or idea, provide as much information as possible.   Pay particular attention about stating the problem in the subject line of your post.  Subject lines such as "Please help" or "This does not work" are too vague. A subject line such as "USB is not working with NXP Product" is more likely to attract the attention of someone familiar with the problem.  Identify the correct forum where the post should be added. This will help other members to collaborate on this post.  Include smart tag and labels to the post for an easy way to find it through the search engine.  Remember, all the collaborations can help others.    Verify your post is Solved  The posts have the feature to display if it is solved and a quick link to the answer, once you have a new post please follow on track the issue, and mark the reply with the answer even if the answer is yours.  Remember, all your collaborations are directly reflected on your badges and rank.   Track your progress in your profile.    Report inappropriate content  As a community member, you can help us to keep our Community organic and clean.  If you find any other user that is posting or replying with topics that don’t matter with our Community, you can report any of these abuses from another user. (Any abuse reported will be monitored by NXP support team).    Be respectful with other members and avoid issues   “Keep it civil, folks!”.  Avoid being banned doing a bad use of the community and features  Community moderators continually are reviewing the content. Depending on the infraction avoid a strike or a Permanent Ban from our site.   Examples: grinding kudos between two users.    In the NXP community, we want to warranty the respect and the good use of this site.  Examples of community violations:  Attempting to impersonate staff or other community members  Threats of violence  Hate or racist speech  Transmit JavaScript, active code, data, text, files, links, software, chat, communication or other materials ("content") that is considered to be unlawful or harmful  Repetitive threads or spam with intent to disrupt the flow of discussion    Visit our FAQ site 
查看全文
KSDK I2C EEPROM Example Hello Kinetis world! Kinetis SDK is here to stay and with it there are good opportunities ahead, such as coding flexibility, portability, RTOS enablement, projects scalability and more. Right now this is a brand new solution introduced by Freescale, so a lot of tutorials, How-To's and demo codes are coming, in addition to those already in the KSDK installation. I wanted to share an example project developed with KSDK v1.0.0 and KDS v1.1.1, which uses a simple driver to communicate to an I2C EEPROM memory using a FRDM-K64F board. The driver is focused and was tested with a 256 Kbit memory (24xx256), but it should be compatible with the 64Kbit, 128 Kbit, 256 Kbit and 512 Kbit versions. This demo project demonstrates how to use the APIs of the KSDK I2C Master Driver. The connections are as next: Please notice this is not intended to be a robust driver for I2C EEPROMs. Instead consider it a basic demo code, but with time we could improve it. The attached pdf is an overview/explanation of the example, while the zip folder contains the project for Kinetis Design Studio v1.1.1. :smileyalert: Before the project can be successfully compiled, you need to have installed KSDK v1.0.0 (www.freescale.com/ksdk) and have the FRDM-K64F platform library already built. For instructions on how to build the platform library you can refer to Appendix A of the next document in KSDK installation folder: C:\Freescale\KSDK_1.0.0\doc\Kinetis SDK K64 User's Guide.pdf :smileyinfo: NOTE: Disregard IAR and Keil instructions and refer to KDS part. Importing and compiling the example project with KDS      1) Unzip the package. It is recommended to place it into your KDS workspace, but it can be located at any place.      2) From KDS go to File -> Import -> General -> Existing Projects into Workspace.      3) Check "Select root directory" and click on "Browse" to search for the location of the unzipped folder. Then click OK.      4) Mark the check box for "I2C_EEPROM_K64" and click on "Finish".      5) Go to Project -> Build Project or simply click on the hammer icon. Build process should finish with no errors. The project provides a default Debug Configuration to use with the Segger J-Link emulator firmware v2.0 installed in the FRDM-K64F. If you wish to use a different connection please refer to the next link: https://community.freescale.com/docs/DOC-101845 I hope you like this demo. Many thanks and credits to abigailinzunza, for her valuable help developing this project. Regards! Jorge Gonzalez General Re: KSDK I2C EEPROM Example Hello Jorge; Thanks 1. My initial assumption was that import is working. Now I understand that it is good for importing examples from KSDK examples folder. Is it correct? 2. I create new project using “Writing my first KSDK Application in KDS Hello World and Toggle LED with GPIO Interrupt” 3. I used your files from Sources folder and hardware_init.c from Board folder. 4. I had changed the HW_I2C2 to 0 in fsl_i2c_irq.c 5. In hardware_init.c there is variable named HW_PORT_INSTANCE_COUNT (lines 68 and 88) that Builder claims as undefined. I didn’t find where it is defined, without any knowledge why I changed it to 10. 6. There is only one warning that variable ‘dataRByte’ is not used file I2C_EEPROM_Example.c (line 60) Regards Shaul Re: KSDK I2C EEPROM Example Hello Shaul Dorf: You tried to import the project and fix it to work with KSDK v1.3. As I mentioned it should be simpler if you create a project for KSDK v1.3 using the project generator and then just copy the relevant EEPROM source/header files from my example. /Jorge Gonzalez Re: KSDK I2C EEPROM Example Hello Jorge; Finally I have time to check your Project Import recommendations. The final results are importing warnings and Build errors that I don’t understand. It was done with KSDK 1.2 and 1.3. I’m attaching images of my Importing steps. Unexplained import message Project setting I don't understand what is wrong in my steps Thanks, Shaul Re: KSDK I2C EEPROM Example Hello Brynn: The projects in the next links should help you as reference for what you try to achieve. In these projects the K22 master sends 4 bytes (0,1,2,3) to the KE02 slave and then the slave sends 4 bytes (4,5,6,7) to the master. I used FRDM-K22F and FRDM-KE02Z40M (R47 and R39 need to be soldered). K22FN512_I2C_Master_KSDK_1_3.zip KE02_I2C_Slave_PE_LDD.zip I hope this helps! Regards, Jorge Gonzalez ! Re: KSDK I2C EEPROM Example Hi Jorge,   I have a K22 as the I2C master using PE and KSDK 1.3  and that seems to be working fine, however, it is talking to the I2C slave which is a sensor based on the KE02 which also uses PE. But I have only gotten the slave to be able to respond to the master sending (using I2C_DRV_MasterRecieveDataBlocking). In the slave it responds to this in the I2C_OnSlaveTxRequest() event handler, where I call the function I2C_SlaveSendBlock(...). I tried to do something similar in the I2C_OnSlaveRxRequest() event with the I2C_SlaveReceiveBlock(...) function, but I can't get it to work right. I am not even convinced that the part I have working is the 'right' way to do it. Can you give an example of I2C slave code that can respond to the Master doing both write and reads, instead of the one way communication I have right now? What I would really like to do is have the master send a command byte, and then receive the a response. It is the slave code that I am having troubles with. Thanks,  Brynn Re: KSDK I2C EEPROM Example Hello shaul dorf: Right now I don't have this project for KSDK v1.3 and KDS v3.1. However I checked the APIs and configuration structures from the I2C driver in KSDK v1.3 and there is not much difference, so you can easily replicate it. - Create a new KSDK v1.3 project with KDS wizard or use the KSDK_Project_Generator. - Import the files I2C_EEPROM_Example.c, I2C_EEPROM.c and I2C_EEPROM.h. - In the case of the file fsl_i2c_irq.c you have to use the one from KSDK v1.3 instead of the old one. - Do not forget to build the KSDK platform library for your device and add the binary from the linker options (Project -> Properties -> C/C++ Build -> Settings -> Cross ARM C++ Linker -> Miscellaneous -> Other objects). If you run into any issues please feel free to ask. Regards! Jorge Gonzalez Re: KSDK I2C EEPROM Example Hello  Jorge; Is it possible to provide zip file for KDS 3.1 with KSDK 1.3 Thanks Shaul Re: KSDK I2C EEPROM Example Hello Paulo Montanher: The address is defined with the macro "EEPROM_ADDRESS" in the file I2C_EEPROM.h. This address is used in the structure eeprom from the file I2C_EEPROM.c, together with the baudrate. This structure is used to call the KSDK I2C driver APIs. Just notice the address is right justified and the driver takes care of shifting the address 1-bit to the left. Regards! Jorge Gonzalez Re: KSDK I2C EEPROM Example Good morning Jorge_Gonzalez I have a complication which should envar i2c slave a 7-bit address and 8 bit address needs to be manimupado, ie, time need to send it to "1" and Oura to "0", however I am having difficulty manipulating this bit in your example. Could you give me a hand in this case. Re: KSDK I2C EEPROM Example Just one small technical note: Prior we start with EEPROM connecting we have to check schematic revision of our FRDM-K64F board. Old boards with schematic version older than version D1 had swapped SCL&SDA signals. More details here: http://www.freescale.com/files/32bit/doc/errata/FRDMK64F_ERRATA.pdf​ BR RadekS
查看全文
To use 56F800EX new additional 32bit multiplication instructions on CodeWarrior V10.3/V10.5/V10.6. This is a test for 56F800EX new additional 32bit multiplication instructions on CodeWarrior V10.3/V10.5/V10.6. General
查看全文
i.MX51 EVK Compiling U-boot Changing Freescale's BSP U-boot using LTIB This quick recipe demonstrates how to compile U-boot using Freescale BSP. 0. After installing i.MX51 BSP: 1. Extract u-boot source: ./ltib -m prep -p u-boot 2. (optional) If you wish to apply changes to the code, the source is located at: /rpm/BUILD/u-boot-2009.08 3. Compile u-boot for the i.MX51 EVK ./ltib -m scbuilb -p u-boot 4. Copy the compiled file to a SD card on your host machine, insert the SD card and: $ sudo dd if=rpm/BUILD/u-boot-2009.08/u-boot.bin of=/dev/mmcblk0 bs=512 /dev/mmcblk0 should replaced according to your host, use "dmesg" after inserting the SD to find out where is the SD on your host. Unmount it before issuing the dd command.   5. Insert the SD on the i.MX 51 EVK, set the switches for SD Card boot and power on the board. i.MX51
查看全文
Flash Programming Algorithms for MPC57xx Hi,    Please update your Cyclone Flash Programming Algorithms for MPC57xx through the link.      http://www.pemicro.com/support/flash_list_menu.cfm     Older code algorithms includes area of HSM. If there are ECC errors in these blocks, the device may stuck in reset. During reset, the SSCM module searches for valid boot header. If it reads corrupted data from HSM blocks, it will not exit the reset.     Newer should be with “NO_BASE_ADDRESS=00F90000/”   https://community.nxp.com/thread/444748   Failed sample waves on PORST vs RESET are as below.    Algorithms in S32DS_Power_v2_1 and S32DS_Power_v2017_R1 are good.     Regards Oliver
查看全文
カメラの互換性とサポート <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 目次| 前へ | 次に (マイビデオで視聴)
查看全文