泰安放心的企业建站公司外贸网络营销

张小明 2026/3/2 23:05:03
泰安放心的企业建站公司,外贸网络营销,文化网站建设方案,系统软件开发服务1、SPI从机DMA接收SPI从机的接收机制与串口接收类似#xff08;参考前面文章#xff09;#xff0c;在使用DMA进行数据接收时#xff0c;其配置方式也较为相似#xff0c;因此不再重复说明DMA的具体配置过程。由于SPI外设本身不提供接收超时中断机制#xff0c;因此无法依…1、SPI从机DMA接收SPI从机的接收机制与串口接收类似参考前面文章在使用DMA进行数据接收时其配置方式也较为相似因此不再重复说明DMA的具体配置过程。由于SPI外设本身不提供接收超时中断机制因此无法依赖超时信号来判断一次接收操作是否完成。为了解决这一问题本DEMO中采用了片选信号CS的上升沿中断作为接收完成的判断依据。具体实现逻辑如下SPI片选信号CS被配置为上升沿触发的外部中断源当主机完成数据发送、释放片选信号后CS引脚由低变高触发上升沿中断在该中断服务程序中先判断当前已接收的数据长度然后对DMA通道进行重置或重新使能以便准备下一次接收操作这种方式有效地利用了SPI通信的物理特性即片选信号为低时通信正在进行为高时通信结束从而实现了对接收完成事件的判断。片选信号中断配置以及中断复位函数代码如下//片选中断配置上升沿中断用于指示通信结束 void SPI3_CS_Intterupt_Init(void) { stc_extint_init_t stcExtIntInit; stc_irq_signin_config_t stcIrqSignConfig; stc_gpio_init_t stcGpioInit; /* GPIO config */ (void)GPIO_StructInit(stcGpioInit); stcGpioInit.u16ExtInt PIN_EXTINT_ON; (void)GPIO_Init(SPI3_SS0_PORT, SPI3_SS0_PIN, stcGpioInit); /* ExtInt config */ (void)EXTINT_StructInit(stcExtIntInit); stcExtIntInit.u32Filter EXTINT_FILTER_ON; stcExtIntInit.u32FilterClock EXTINT_FCLK_DIV8; stcExtIntInit.u32Edge EXTINT_TRIG_RISING; (void)EXTINT_Init(SPI3_SS0_EXTINT_CH, stcExtIntInit); /* IRQ sign-in */ stcIrqSignConfig.enIntSrc SPI3_SS0_INTSRC; stcIrqSignConfig.enIRQn SPI3_CS_IRQn; stcIrqSignConfig.pfnCallback BSP_SPI_Slave_IRQHandler; (void)INTC_IrqSignIn(stcIrqSignConfig); /* NVIC config */ NVIC_ClearPendingIRQ(stcIrqSignConfig.enIRQn); NVIC_SetPriority(stcIrqSignConfig.enIRQn, DDL_IRQ_PRIO_DEFAULT); NVIC_EnableIRQ(stcIrqSignConfig.enIRQn); } //从机片选中断处理 void BSP_SPI_Slave_IRQHandler(void) { if (SET EXTINT_GetExtIntStatus(SPI3_SS0_EXTINT_CH)) { SPI3_Recv_Lenth SPI3_RX_BUF_SIZE - DMA_GetTransCount(SPI3_RX_DMA_UNIT, SPI3_RX_DMA_CH); //获取接收长度 SPI3_Receive_Evt 1; //置位接收完成事件标志 DMA_SetDestAddr(SPI3_RX_DMA_UNIT, SPI3_RX_DMA_CH, (uint32_t)SPI3_RxBuf[0]); //设置下次开始接收的地址 DMA_SetTransCount(SPI3_RX_DMA_UNIT, SPI3_RX_DMA_CH, SPI3_RX_BUF_SIZE); //设置下次DMA传输长度 EXTINT_ClearExtIntStatus(SPI3_SS0_EXTINT_CH); //清除中断标志 } }2、SPI从机DMA发送在SPI从机的设计中数据的发送过程是由主机完全控制的。从机无法预知主机何时开始读取数据也无法确定主机需要接收多少数据。因此从机必须始终保持数据就绪状态并确保DMA发送通道随时准备响应主机的读取请求。SPI从机内部通常包含两个关键寄存器发送数据寄存器DR 和 移位寄存器Shift Register。当这两个寄存器均为空时写入发送数据寄存器的数据会立即被转移到移位寄存器中从而触发“发送寄存器空”事件进而可能再次通过DMA向发送数据寄存器写入新数据。这种行为虽然不会导致数据覆盖但在通信尚未开始前从机并不知道主机希望读取哪些数据。因此提前填充到这两个寄存器中的数据可能是不合适的甚至会导致错误的数据被发送出去。为了解决这个问题通常需要主机与从机之间进行一定的协议协商主机先发送命令帧通知从机需要执行的操作或读取的数据类型。从机接收到命令后解析并准备相应的数据并在内部完成数据缓冲。为了确保数据正确性从机需清空发送数据寄存器和移位寄存器中的旧数据但由于SPI外设没有专门用于清除移位寄存器的配置项因此通常的做法是先关闭SPI外设再重新启用以清空内部状态。最后主机发起正式的数据读取操作此时从机已准备好正确的数据可以确保数据传输的准确性。因此SPI从机发送的DMA通道在数据准备完成之后配置DMA的地址与长度然后重启SPI外设。此部分代码如下//SPI从机需要在主机未读取数据之前将数据准备好待主机发起读取数据。 void SPI_Slave_Load_1st_Data(uint8_t *pu8Data) { DMA_SetSrcAddr(SPI3_TX_DMA_UNIT, SPI3_TX_DMA_CH, (uint32_t)(pu8Data)); // 设置DMA目的地址 DMA_SetTransCount(SPI3_TX_DMA_UNIT, SPI3_TX_DMA_CH, SPI3_TX_BUF_SIZE); // 设置DMA传输长度 CLR_REG32_BIT(CM_SPI3-CR1, SPI_CR1_SPE);//注意需要将SPI关闭再使能才可以重新加载移位寄存器的数据 SET_REG32_BIT(CM_SPI3-CR1, SPI_CR1_SPE); }
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

绍兴网站建设方案报价云南哪有网站建设推广

第一章:Open-AutoGLM 邀请码的行业背景与准入逻辑在人工智能技术快速演进的背景下,大语言模型(LLM)的研发与应用正从封闭走向开放协作。Open-AutoGLM 作为面向开发者与研究者的开源智能引擎平台,其邀请码机制并非简单的…

张小明 2026/1/19 16:53:54 网站建设

莆田做网站公司电话网站模板王

StardewXnbHack创意引擎:开启《星露谷物语》个性化改造魔法之旅 【免费下载链接】StardewXnbHack A simple one-way XNB unpacker for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/st/StardewXnbHack 想象一下,把你熟悉的星露谷农…

张小明 2026/1/19 16:53:23 网站建设

行业数据网站广州高端品牌网站建设后台管理便捷

第一章:智能 Agent 与零信任架构的融合演进随着企业数字化转型的深入,传统边界安全模型逐渐失效,零信任架构(Zero Trust Architecture, ZTA)成为现代网络安全的核心范式。与此同时,智能 Agent 技术凭借其自…

张小明 2026/1/19 16:52:52 网站建设

手机建设网站wordpress支付免签约插件

前言 本文深入解析 iOS 设备的 MobileBackup2 备份协议,包括完整的通信流程、消息格式、文件传输机制以及关键的 Status.plist 文件处理。适合从事 iOS 设备管理、备份工具开发的工程师阅读。 关键词: iOS备份、MobileBackup2、libimobiledevice、DeviceLink协议、Status.pl…

张小明 2026/1/19 16:52:21 网站建设

站长工具seo综合查询5g南宁网站建设工具

引线铝电解电容行业分析:创慧电解电容的卓越表现行业痛点分析在引线铝电解电容领域,当前面临着诸多技术挑战。一方面,随着电子设备性能要求的不断提高,对电容的稳定性和可靠性提出了更为严苛的标准。例如,在一些高功率…

张小明 2026/1/19 16:51:50 网站建设

网站模板价格WordPress文章相似推荐

PrimeVue Toast组件交互事件回调:从被动通知到主动交互的终极指南 【免费下载链接】primevue Next Generation Vue UI Component Library 项目地址: https://gitcode.com/GitHub_Trending/pr/primevue 你是否曾经遇到过这样的场景:用户关闭了重要…

张小明 2026/1/19 16:51:19 网站建设