p47
3.4.3 UART 配置示例
1.0 UART0基础配置
示例配置 UART0 串口通讯格式如下:
• 波特率 115200
• 数据位长 8 bits
• 无奇偶校验
• 停止位长度 1 bit
• 关闭流控
示例配置 UART0 串口中断触发方式如下:
• 使能 RXFIFO TOUT 中断,超时时长为当前波特率下 2 bits 传输时间 (如果在收到最后一个 bit 之后,超过 2 个 bit 的时间没有数据到 RXFIFO,就会触发该中断)。
• 使能停止位异常中断。
• 使能 RXFIFO 限中断, 限值为 10 Bytes。
• 使能 RXFIFO OVF 中断 (该中断主要 于检测 RXFIFO 满的情况,RXFIFO 最大为 128 Bytes,如果在 RXFIFO 中的数据已满且没有被取出,UART RXFIFO 仍有数据接收,就会触发该中断,同时后面的数据无法接收)。
Translation Help
-
- Posts: 23
- Joined: Thu Nov 19, 2015 5:52 am
Re: Translation Help
the rabbit in the hat
-
- Posts: 23
- Joined: Thu Nov 19, 2015 5:52 am
Re: Translation Help
p42
2. UART_IntrConfig
配置 UART 中断。
参数说明:
• uart_no :需要配置的串口号,UART0 对应串口号 0,UART1 对应串口号 1。
• pUARTIntrConf 的原型如下
• UART_IntrEnMask :使能 UART 相应的中断。
UART_IntrEnMask 值
说明
UART_RXFIFO_FULL_INT_ENA
使能 RXFIFO 的门限中断。
需与 UART_RX_FifoFullIntrThresh 配合使用。
UART_FRM_ERR_INT_ENA
使能停止位异常中断
UART_RXFIFO_OVF_INT_ENA
使能 RXFIFO 溢出中断。
当 RXFIFO 收到超过 128 字节数据时,触发该中断。 后文简称为 “RXFIFO OVF 中断”。
UART_RXFIFO_TOUT_INT_ENA
使能 RXFIFO 的 TOUT 中断。
需与 UART_RX_TimeOutIntrThresh 配合使用。
UART_TXFIFO_EMPTY_INT_ENA
使能 TXFIFO 的门限中断。
需与 UART_TX_FifoEmptyIntrThresh 配合使用。
2. UART_IntrConfig
配置 UART 中断。
参数说明:
• uart_no :需要配置的串口号,UART0 对应串口号 0,UART1 对应串口号 1。
• pUARTIntrConf 的原型如下
• UART_IntrEnMask :使能 UART 相应的中断。
UART_IntrEnMask 值
说明
UART_RXFIFO_FULL_INT_ENA
使能 RXFIFO 的门限中断。
需与 UART_RX_FifoFullIntrThresh 配合使用。
UART_FRM_ERR_INT_ENA
使能停止位异常中断
UART_RXFIFO_OVF_INT_ENA
使能 RXFIFO 溢出中断。
当 RXFIFO 收到超过 128 字节数据时,触发该中断。 后文简称为 “RXFIFO OVF 中断”。
UART_RXFIFO_TOUT_INT_ENA
使能 RXFIFO 的 TOUT 中断。
需与 UART_RX_TimeOutIntrThresh 配合使用。
UART_TXFIFO_EMPTY_INT_ENA
使能 TXFIFO 的门限中断。
需与 UART_TX_FifoEmptyIntrThresh 配合使用。
the rabbit in the hat
-
- Posts: 23
- Joined: Thu Nov 19, 2015 5:52 am
Re: Translation Help
p43
UART_RX_TimeOutIntrThresh :配置 RX 接收超时中断,单位为当前 UART 波特率下发送 1Byte 所需的时间。
‣ 配置该中断需使能 UART_IntrEnMask 中 RXFIFO OVF 中断对应的位。
UART_RX_FifoFullIntrThresh :配置 RX 接收 FIFO 触发中断的门限值,单位为 Byte。
‣ 当 RX 接收 FIFO 接收的字符数超过设置的门限值时,就会触发中断。
‣ 配置该中断需使能 UART_IntrEnMask 中 RXFIFO FULL 对应的位。
UART_TX_FifoEmptyIntrThresh :配置 TX 发送 FIFO 触发中断的门限值,单位为 Byte。
‣ 当 TX 发送 FIFO 中字符数少于该门限值时,就会触发中断。
‣ 配置该中断需使能 UART_IntrEnMask 中 TXFIFO EMPTY 对应的位。
UART_RX_TimeOutIntrThresh :配置 RX 接收超时中断,单位为当前 UART 波特率下发送 1Byte 所需的时间。
‣ 配置该中断需使能 UART_IntrEnMask 中 RXFIFO OVF 中断对应的位。
UART_RX_FifoFullIntrThresh :配置 RX 接收 FIFO 触发中断的门限值,单位为 Byte。
‣ 当 RX 接收 FIFO 接收的字符数超过设置的门限值时,就会触发中断。
‣ 配置该中断需使能 UART_IntrEnMask 中 RXFIFO FULL 对应的位。
UART_TX_FifoEmptyIntrThresh :配置 TX 发送 FIFO 触发中断的门限值,单位为 Byte。
‣ 当 TX 发送 FIFO 中字符数少于该门限值时,就会触发中断。
‣ 配置该中断需使能 UART_IntrEnMask 中 TXFIFO EMPTY 对应的位。
the rabbit in the hat
-
- Posts: 23
- Joined: Thu Nov 19, 2015 5:52 am
Re: Translation Help
p30
3.2. ESP32中断说明
ESP32 有 2 个 CPU,每个 CPU 有 32 个中断源。这 32 个中断源分为两类:
• •
CPU 内部中断。CPU 内部中断有 5 个,其中三个定时器中断,两个软件中断。
CPU外部中断。CPU 外部中断有 27 个,这 27 个外部中断由 44 个 CPU 的外设产 。 CPU的中断源序号为 0 31,其中断类型、优先级如下图。
其中内部中断源:
序号 6 中断源为 timer.0,序号 15 中断源为 timer.1,序号 16 中断源为 timer.2。 序号 7 中断源和序号 29 中断源为软件中断。
3.2. ESP32中断说明
ESP32 有 2 个 CPU,每个 CPU 有 32 个中断源。这 32 个中断源分为两类:
• •
CPU 内部中断。CPU 内部中断有 5 个,其中三个定时器中断,两个软件中断。
CPU外部中断。CPU 外部中断有 27 个,这 27 个外部中断由 44 个 CPU 的外设产 。 CPU的中断源序号为 0 31,其中断类型、优先级如下图。
其中内部中断源:
序号 6 中断源为 timer.0,序号 15 中断源为 timer.1,序号 16 中断源为 timer.2。 序号 7 中断源和序号 29 中断源为软件中断。
the rabbit in the hat
-
- Posts: 23
- Joined: Thu Nov 19, 2015 5:52 am
Re: Translation Help
p31
外部中断源序号为 0 5、8 14、17 28、30 31。通过配置寄存器,可以将 44 个外设产生的中断接入这 27 个中断源。当多个外设中断接 CPU 的同 个中断源时,这些外设中断信号以 “或” 关系产生CPU 中断源信号,当 CPU 响应中断时,可通过两种 式查询具体是哪个外设产生的中断:
• 方式一 :查询中断控制器的寄存器,得知是哪 个外设产生了中断。
• 方式二 :分别查询可能产生中断的外设的部寄存器,判断是哪一个外设产生了中断。
外部中断源序号为 0 5、8 14、17 28、30 31。通过配置寄存器,可以将 44 个外设产生的中断接入这 27 个中断源。当多个外设中断接 CPU 的同 个中断源时,这些外设中断信号以 “或” 关系产生CPU 中断源信号,当 CPU 响应中断时,可通过两种 式查询具体是哪个外设产生的中断:
• 方式一 :查询中断控制器的寄存器,得知是哪 个外设产生了中断。
• 方式二 :分别查询可能产生中断的外设的部寄存器,判断是哪一个外设产生了中断。
the rabbit in the hat
-
- Posts: 23
- Joined: Thu Nov 19, 2015 5:52 am
Re: Translation Help
p31
1. 配置外设产 的中断 某 个 CPU 外部中断源
每一个外设中断都有一个对应的寄存器,将此寄存器设置为对应的 CPU 中断源序号,就可以将此外设配置到 CPU 对应中断源上。
函数原型如下:
INTR_MAP_REG_A :外设中断对应的配置寄存器。
PRODPORT_INTR_MAP_0 :外设中断对应配置位在的配置寄存器中的位置。
xxx :CPU 中断源序号。
‣ xxx 若为 6、7、15、16、29 时,表示外设中断并未配置到 CPU 任 中断源上。
‣ xxx 不为 6、7、15、16、29 时,表示外设中断配置到了 CPU 对应中断源上。 配置寄存器名称、配置位名称与外设中断的对应关系如下。
当多个外设中断对应的寄存器位被设置为同一个 CPU 中断源值时,这些中断信号将进 “或” 操作后, 成 个 CPU 中断。当 CPU 响应中断时,需要先判断是哪 个外设产生了中断。
1. 配置外设产 的中断 某 个 CPU 外部中断源
每一个外设中断都有一个对应的寄存器,将此寄存器设置为对应的 CPU 中断源序号,就可以将此外设配置到 CPU 对应中断源上。
函数原型如下:
INTR_MAP_REG_A :外设中断对应的配置寄存器。
PRODPORT_INTR_MAP_0 :外设中断对应配置位在的配置寄存器中的位置。
xxx :CPU 中断源序号。
‣ xxx 若为 6、7、15、16、29 时,表示外设中断并未配置到 CPU 任 中断源上。
‣ xxx 不为 6、7、15、16、29 时,表示外设中断配置到了 CPU 对应中断源上。 配置寄存器名称、配置位名称与外设中断的对应关系如下。
当多个外设中断对应的寄存器位被设置为同一个 CPU 中断源值时,这些中断信号将进 “或” 操作后, 成 个 CPU 中断。当 CPU 响应中断时,需要先判断是哪 个外设产生了中断。
the rabbit in the hat
-
- Posts: 23
- Joined: Thu Nov 19, 2015 5:52 am
Re: Translation Help
p32
2. CPU响应中断时,通过查询中断控制模块判断是哪一个外设产生了中断
当 CPU 的中断源上只接有一个外设中断的时候,不需要通过查询判断是哪一个外设产生了中断。 但当多个外设接入同一个 CPU 中断源时,则需要先判断是哪一个外设产生的中断。
查询方法:可通过读取中断控制器的寄存器,获知哪个外设产生了中断。
这两个寄存器与外设中断的对应关系如下。
除此方法以外还可逐个查询各个外设内的寄存器,以判断哪个外设产生了中断。
2. CPU响应中断时,通过查询中断控制模块判断是哪一个外设产生了中断
当 CPU 的中断源上只接有一个外设中断的时候,不需要通过查询判断是哪一个外设产生了中断。 但当多个外设接入同一个 CPU 中断源时,则需要先判断是哪一个外设产生的中断。
查询方法:可通过读取中断控制器的寄存器,获知哪个外设产生了中断。
这两个寄存器与外设中断的对应关系如下。
除此方法以外还可逐个查询各个外设内的寄存器,以判断哪个外设产生了中断。
the rabbit in the hat
- DAFlippers
- Posts: 22
- Joined: Sat Nov 14, 2015 9:20 am
Re: Translation Help
3.4.3 UART configuration examples
1.0 UART0 Basic Configuration
Initial configuration UART0 serial communications format is as follows:
• Baud Rate 115200
• Data bit length 8 bits
• No parity
• Stop bit length 1 bit
• Example configuration for UART0 serial port interrupt trigger mode as follows:
• Set RXFIFO TOUT interrupt timeout - period of 2 bits transmission time at the current baud rate (this will trigger an interrupt if there is no data received RXFIFO after more than two ‘bits’ of time since receiving the last bit).
• Enable stop bit aborted. <this might mean ‘stop bit set’ or ‘stop bit clear’ – need more info>
• Enable RXFIFO limit interrupt (maximum of 10 Bytes).
• Enable RXFIFO OVF interrupt (the interrupt is triggered by a full RXFIFO, RXFIFO maximum of 128 Bytes, if the RXFIFO is full and UART RXFIFO still receiving data, it will trigger the interrupt and additional data will be lost).
1.0 UART0 Basic Configuration
Initial configuration UART0 serial communications format is as follows:
• Baud Rate 115200
• Data bit length 8 bits
• No parity
• Stop bit length 1 bit
• Example configuration for UART0 serial port interrupt trigger mode as follows:
• Set RXFIFO TOUT interrupt timeout - period of 2 bits transmission time at the current baud rate (this will trigger an interrupt if there is no data received RXFIFO after more than two ‘bits’ of time since receiving the last bit).
• Enable stop bit aborted. <this might mean ‘stop bit set’ or ‘stop bit clear’ – need more info>
• Enable RXFIFO limit interrupt (maximum of 10 Bytes).
• Enable RXFIFO OVF interrupt (the interrupt is triggered by a full RXFIFO, RXFIFO maximum of 128 Bytes, if the RXFIFO is full and UART RXFIFO still receiving data, it will trigger the interrupt and additional data will be lost).
- DAFlippers
- Posts: 22
- Joined: Sat Nov 14, 2015 9:20 am
Re: Translation Help
@esprabbit If you send (PM) me the text and any drawings/diagrams/tables I'll have a go at translating.
David
David
Who is online
Users browsing this forum: No registered users and 254 guests