dspic33或pic24系列单片机使用dma串口发送注意事项

本文探讨了DMA(直接内存访问)在串口发送中的应用,涉及阻塞、中断、FIFO的不同策略,以及如何保持串口功能正常工作。特别强调了时间复杂度、DMA+CIF的满负载模式和字节对齐问题。

1、虽然DMA的发送由串口发送中断来触发,但可以不打开串口发送中断,也可以不写串口发送函数。

2、时间复杂度:阻塞发送 > 中断发送+fifo > 单字节长度dma+fifo > 满负载dma+fifo。

阻塞发送:发送时等待发送完成标志。

中断发送+fifo:fifo中有数据即发送,发送中断中继续判断,有数据继续发送。波特率高时,进中断频繁。CPU需要持续执行数据从fifo中到外设的工作。

单字节长度dma+fifo:和中断发送+fifo类似,不同点仅在于变成了CPU需要持续执行数据从fifo到dma缓冲区的工作。仍会多次进入dma中断,波特率高时进中断频繁。

满负载dma+fifo:在fifo中数据长度>=dma缓冲区时,一次性将数据复制并发送出去。这样可以减少进入dma中断的次数,在波特率高时尤其合适。缺点是,主循环中需要维护一个fifo_poll,来持续查看fifo中是否有数据。

3、当使用dma+fifo进行串口发送时,注意为使普通发送函数,或printf函数继续能用,可以在初始化时直接打开串口使能和串口发送使能。改由dma的FORCE位强制进行发送,即手动传输模式。但是一定注意每次发送前,要判断dma上次的发送是否已经完成,和串口移位寄存器是否为空。

4、用dma+fifo进行串口发送时,注意每次发送时,可以重新对dma进行配置,尤其单次发送长度DMAxCNT可能根据每次发送变化。

5、串口的发送,一般使用字节发送,dma中注意设置。虽然该系列为16位单片机,但dma缓冲区的地址是递增+1的,即单个字节有一个地址。所以,如果dma选择的模式是按字发送,则后递增的寄存器间接寻址时,会自动递增2个地址。   但要注意申请dma缓存时的字节对齐问题。

<think> 我们正在查找支持多串口PIC单片机型号。根据Microchip公司的产品线,PIC系列单片机中有多个型号支持两个更多UART模块。以下是一些常见的支持多串口PIC单片机型号: 1. **PIC18F系列**:许多PIC18F型号支持多个UART。例如: - PIC18F4550:通常有1个UART,但请注意,这个型号主要侧重于USB功能。 - 实际上,我们可能需要更高端的PIC18F型号,比如: - PIC18F46K22:支持2个UART(UART1和UART2)[^1] - PIC18F67K40:支持4个UART(UART1, UART2, UART3, UART4)[^2] 2. **PIC24F系列**:16位单片机,通常支持多个UART。 - 例如PIC24FJ256GA106:支持最多4个UART模块[^3] 3. **PIC24E系列**:高性能16位单片机,同样支持多个UART。 - 例如PIC24EP512GU810:支持6个UART模块[^4] 4. **dsPIC33系列**:数字信号控制器,也支持多个UART。 - 例如dsPIC33EP512MU810:支持6个UART模块[^5] 5. **PIC32系列**:32位单片机,通常支持多个UART(通常称为UART模块,有些型号还支持LIN、IrDA等功能)。 - 例如PIC32MX795F512L:支持多达6个UART模块[^6] 在选择具体型号时,需要查看该型号的数据手册,确认其串口数量。通常,在数据手册的“外设”“通信接口”章节会明确说明。 此外,还可以通过Microchip官网的器件筛选工具来选择: 1. 访问Microchip官网的[产品选择器](https://www.microchip.com/maps/microcontroller.aspx) 2. 在筛选条件中选择“通信接口”->“UART”,并设置所需的数量(如2、3、4等) 3. 查看筛选结果 下面列出一些具体型号及其支持的UART数量(以表格形式呈现,但请注意,由于文本格式限制,表格以简洁方式表示): | 系列 | 型号示例 | UART数量 | 备注 | |-------------|-------------------|----------|------| | PIC18F | PIC18F46K22 | 2 | [^1] | | PIC18F | PIC18F67K40 | 4 | [^2] | | PIC24F | PIC24FJ256GA106 | 4 | [^3] | | PIC24E | PIC24EP512GU810 | 6 | [^4] | | dsPIC33 | dsPIC33EP512MU810 | 6 | [^5] | | PIC32MX | PIC32MX795F512L | 6 | [^6] | | PIC32MZ EF | PIC32MZ2048EFM100 | 6 | [^7] | 请注意,这些型号的UART数量可能因具体封装和引脚配置而略有不同,请以数据手册为准。 另外,除了硬件UART,还可以通过软件模拟实现额外的“软串口”,但这会占用CPU时间且波特率和稳定性受限。因此,如果项目需要多个高可靠性的串口通信,建议选择具有足够硬件UART的型号。 如果需要更具体的推荐,请提供项目需求,例如: - 需要多少个串口 - 其他外设需求(如ADC通道数、PWM输出、USB、CAN等) - 工作频率和功耗要求 - 封装和引脚数量要求 §§相关问题§§ 1. 如何通过Microchip官网查找支持多串口PIC单片机? 2. PIC单片机硬件UART和软件模拟串口有何优缺点? 3. 如何配置PIC18F67K40的多个UART同时工作? </think> 以下是支持多串口的常见PIC单片机型号汇总及选型建议: ### 一、主流多串口PIC单片机型号 | 系列 | 典型型号 | UART数量 | 最大波特率 | 特色功能 | |-------------|-------------------|----------|------------|---------------------------| | **PIC18F** | PIC18F67K40 | 4 | 1 Mbaud | 带DMA支持的低功耗设计[^1] | | | PIC18F46K22 | 2 | 1 Mbaud | 内置EEPROM | | **PIC24F** | PIC24FJ256GA410 | 4 | 3 Mbaud | 16位处理器,硬件流控制[^2] | | | PIC24FJ128GA310 | 3 | 3 Mbaud | 低电压运行(1.8V) | | **dsPIC33** | dsPIC33EP512MU810 | 6 | 5 Mbaud | 数字信号处理内核[^3] | | **PIC32MZ** | PIC32MZ2048EFH144 | 6 | 15 Mbaud | 32位MIPS内核,支持USB 3.0 | ### 二、选型关键参数对比 1. **性能需求** - 高速场景:选择PIC32MZ系列($$ \text{波特率} \geq 10\text{Mbps} $$) - 中低速场景:PIC18F/PIC24F系列($$ \text{波特率} \leq 3\text{Mbps} $$) 2. **外设集成** ```mermaid graph LR A[多串口需求] --> B{UART数量} B -- >2 --> C[PIC18F46K22] B -- >4 --> D[PIC24FJ256GA410] B -- >6 --> E[dsPIC33EP512MU810] ``` 3. **功耗控制**(典型值) - PIC18F系列:休眠模式 $I_q < 100\text{nA}$ - PIC24F系列:运行模式 $I_{dd} \approx 200\mu\text{A}/\text{MHz}$ ### 三、选型工具与资源 1. **Microchip官网筛选器** 使用[产品选择器](https://www.microchip.com/maps/microcontroller.aspx): - 筛选条件:Peripherals → UART → 设置数量 - 推荐参数:选择"Independent Baud Rate Generator" 2. **开发资源** - 数据手册:[PIC18F67K40 DS](https://ww1.microchip.com/downloads/en/DeviceDoc/PIC18F26-27-45-46-47-55-56-57K42-Data-Sheet-40001919D.pdf) - 代码库:[MCC UART配置示例](https://github.com/microchip-pic-avr-examples) ### 四、典型应用场景 1. **工业网关** PIC32MZ + 4×UART:Modbus RTU主站协议栈实现[^4] 2. **医疗设备** PIC24FJ256GA410:同时连接蓝牙模块、显示屏串口和传感器接口 3. **楼宇自动化** dsPIC33EP512MU810:6路RS-485总线控制HVAC系统 > ⚠️ **重要提示**:实际UART可用数量可能受引脚复用影响,需查看具体型号的"Pinout Diagram"章节确认[^5]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值