"关于STM32的I2C硬件DMA实现" STM32的I2C硬件DMA实现是一个复杂的主题,但只要基础牢靠,并没有想象中的那么困难。下面是关于STM32的I2C硬件DMA实现的详细知识点: 一、I2C协议 I2C协议包括START、ACK、NACK、STOP四个基本信号。START信号表示传输的开始,ACK信号表示确认,NACK信号表示否认,STOP信号表示传输的结束。在I2C协议中,START信号是必须的,而ACK、NACK、STOP信号是可选的。 二、I2C硬件DMA实现 STM32的I2C硬件DMA实现可以分为主发和主收两种模式。主发模式下,主控设备发送START信号,然后发送从设备的地址,接着发送数据。在数据传输完成后,主控设备发送STOP信号。主收模式下,主控设备发送START信号,然后从设备发送数据,最后主控设备发送NACK信号。 三、STM32的寄存器 STM32的I2C硬件DMA实现需要使用寄存器来控制I2C总线。有两个状态寄存器,事件、错误状态一堆,看起来确实都算是有用,但实际使用的时候未必都要用到。状态寄存器的清除是一个问题,可以使用PE位禁止或SR1写0的方法。 四、中断方式 STM32的I2C硬件DMA实现需要结合中断方式,否则无法正确地控制I2C总线。在主发时,需要使能PE位、ACK位、ITEVTEN位、DMA位和START位,然后进入事件中断,判断I2C_EVENT_MASTER_MODE_SELECT,写入从地址到DR寄存器。在数据传输完成后,产生I2C_EVENT_MASTER_BYTE_TRANSMITTED事件,可以判断DMA的CNDTR寄存器是否为0,如果是0,表示数据传输完成,可以使能STOP位。 五、DMA控制器 STM32的I2C硬件DMA实现需要使用DMA控制器来控制数据传输。在主发时,DMA控制器控制数据传输,主控设备不需要担心数据传输的细节。在数据传输完成后,DMA控制器会产生事件中断,可以判断DMA的CNDTR寄存器是否为0,如果是0,表示数据传输完成。 六、主收时的注意点 在主收时,需要特别注意主控寄存器的LAST位,这个位很重要,如果你只是一轮DMA传输,那么这个必须被置位,因为传输到最后一个字节的时候,主控需要发出NACK而不是ACK来通知从设备释放对总线的控制! 七、结论 STM32的I2C硬件DMA实现是一个复杂的主题,但只要基础牢靠,并没有想象中的那么困难。通过了解I2C协议、STM32的寄存器、中断方式、DMA控制器,可以正确地实现STM32的I2C硬件DMA实现。















- xingzhe7112021-03-11怀疑是骗币的?

- 粉丝: 5
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 第3章数据库基础知识培训资料.ppt
- 11第十一章-网络基础.pptx
- 办公大楼(经济型酒店)无线网络覆盖方案.doc
- 企业信息化建设的实现及意义资料讲解.doc
- 设计软件测试方案.docx
- XXXX0509培训资料 Z68X系列产品介绍及Touch BIOS图解.pptx
- LTE网络优化分析报告.doc
- aspen化工过程经济分析与评价.ppt
- ppt课件:互联网产品智能设备发布大气商务通用演示.pptx
- CAD期末考试题答案.doc
- 南开大学2021年9月《计算机原理》作业考核试题及答案参考20.docx
- 车之侣汽车主题超市装修项目管理方案.docx
- 2019年最新网络技术工程师总结范文及最新工作规划.doc
- 2022网络安全工作实施方案.docx
- DB22_T_3332_2022_耕地质量指标划分细则.pdf
- 软件工程4软件设计ppt课件知识讲解.ppt


