PY32F002B Reference Manual v0.5-4
PY32F002B Reference Manual v0.5-4
S Address A DATA1 NA P
19.3.6. 错误状态
19.3.6.1. 总线错误
在一个地址或数据字节传输期间,当 I2C 接口检测到一个外部的停止或起始条件则产生总线错误。此时:
● BERR 位被置位为’1’;如果设置了 ITERREN 位,则产生一个中断;
● 在 slave 模式:数据被丢弃,硬件释放总线:
─ 如果是错误的 Start 条件,slave 认为是一个 Restart,并等待地址或停止条件
─ 如果是错误的 Stop 条件,slave 按正常的停止条件操作,同时硬件释放总线
● 在 master 模式:硬件不释放总线,同时不影响当前的传输状态。此时由软件决定是否要中止当前的传输。
19.3.6.2. 应答失败(AF)
当接口检测到一个无应答位时,产生应答错误。此时:
● AF 位被置位,如果设置了 ITERREN 位,则产生一个中断
● 当发送器接收到一个 NACK 时,必须复位通讯:
─ 如果是处于 slave 模式,硬件释放总线。
─ 如果是处于 master 模式,软件必须生成一个停止条件或者 repeated start。
244/305
PY32F002B 参考手册
19.3.7. SDA/SCL 控制
● 如果允许时钟延长:
─ 发送器模式:如果 TxE=1 且 BTF=1:I2C 接口在传输前保持时钟线为低,以等待软件读取 SR1,然后把数据
写进数据寄存器(DR 和 shift 寄存器都是空的)。
─ 接收器模式:如果 RxNE=1 且 BTF=1:I2C 接口在接收到数据字节后保持时钟线为低,以等待软件读 SR1,
然后读数据寄存器 DR(DR 和 shift 寄存器都是满的)。
● 如果在 slave 模式中禁止时钟延长:
─ 如果 RxNE=1,在接收到下个字节前 DR 还没有被读出,则发生 overrun 运行。接收到的最后一个字节丢失。
─ 如果 TxE=1,在必须发送下个字节之前却没有新数据写进 DR,则发生 underrun 运行。相同的字节将被重复
发出。
─ 硬件未实现对重复写冲突的控制。
19.4. I2C 中断
表 19-1 I2C 中断请求
中断事件 事件标志 开启控制位
起始位已发送(Master) SB
地址已发送(Master) 或 地址匹配(Slave) ADDR
ITEVTEN
已收到停止(Slave) STOPF
数据字节传输完成 BTF
接收缓冲区非空 RxNE
ITEVTEN 和 ITBUFEN
发送缓冲区空 TxE
总线错误 BERR
仲裁丢失(Master) ARLO
响应失败 AF ITERREN
过载/欠载 OVR
PEC 错误 PECERR
245/305
PY32F002B 参考手册
Address offset:0x00
Reset value:0x0000
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
NO
SWRS Re Re Re PO AC STO STAR ENG Re Re Re Re Re
STRETC PE
T s s s S K P T C s s s s s
H
R
RW RW RW RW RW RW RW
W
246/305
PY32F002B 参考手册
Address offset:0x04
Reset value:0x0000
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
IT- ITEV- ITER-
Res Res Res Res Res Res Res FREQ[5:0]
BUFEN TEN REN
RW RW RW RW RW RW RW RW RW
247/305
PY32F002B 参考手册
8 ITERREN RW 0 在下列条件下,将产生该中断:
BERR=1
ARLO=1
AF=1
OVR=1
PECERR=1
7:6 Reserved RES - Reserved
I2C 模块时钟频率。
必须用 APB 时钟频率的值配置该寄存器,以产生
与 I2C 协议兼容的数据 setup 和 hold 时间。
最小允许可设定的频率是 4MHz(标准模式,即
100k)、8MHz(400k),最大频率是芯片最高
的 APB 时钟频率。
5:0 FREQ RW 0
000000:禁止
000001:禁止
000100:4MHz
…..
010110:24MHz
大于 110000:禁止。
Address offset:0x08
Reset value:0x0000
15 14 13 12 11 10 9 8 7 6 54 3 2 1 0
Res Res Res Res Res Res Res ADD[7:1] Res
RW RW RW RW RW RW
Address offset:0x10
Reset value:0x0000
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Res Res Res Res Res Res Res Res DR[7:0]
RW RW RW RW RW RW RW RW
248/305
PY32F002B 参考手册
Address offset:0x14
Reset value:0x0000
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Re Re Re Re Tx RxN Re STOP Re BT ADD S
OVR AF ARLO BERR
s s s s E E s F s F R B
RC_W RC_W RC_W RC_W
R R R R R R
0 0 0 0
249/305
PY32F002B 参考手册
250/305
PY32F002B 参考手册
251/305
PY32F002B 参考手册
Address offset:0x18
Reset value:0x0000
Note: 即使 ADDR 标志位在读 I2C_SR1 寄存器后被置位,在读 I2C_SR1 之后再读 I2C_SR2 寄存器,也会清零
ADDR 标志位。因此,仅在发现 I2C_SR1 寄存器的 ADDR 位被置位或者 STOPF 位被清零时,I2C_SR2 寄存
器才必须被读。
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
GEN-
Res Res Res Res Res TRA BUSY MSL
CALL
R R R R R R R R R R R R
252/305
PY32F002B 参考手册
Address offset:0x1C
Reset value:0x0000
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
F/S DUTY Res Res CCR[11:0]
RW RW RW RW RW RW RW RW RW RW RW RW RW RW
Address offset:0x20
Reset value:0x0000
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Res Res Res Res Res Res Res Res Res Res TRISE[5:0]
RW RW RW RW RW RW
253/305
PY32F002B 参考手册
14
13
12
11
10
0
TRETCH
ENPEC
START
ENGC
STOP
NOS-
POS
Res.
Res.
Res.
Res.
Res.
Res.
Res.
ACK
PE
I2C_CR1
0x00
Reset value 0 0 0 0 0 0 0 0 0
BUFEN
ITER-
ITEV-
REN
Res.
Res.
Res.
Res.
Res.
Res.
Res.
TEN
IT-
I2C_CR2 FREQ[5:0]
0x04
Reset value 0 0 0 0 0 0 0 0 0
Re
Re
Re
Re
Re
Re
Re
Re
Re
I2C_OAR1 ADD[7:1]
s.
s.
s.
s.
s.
s.
s.
s.
s.
0x08
Reset value 0 0 0 0 0 0 0
Re
Re
Re
Re
Re
Re
Re
Re
I2C_DR DR[7:0]
s.
s.
s.
s.
s.
s.
s.
s.
0x10
Reset value 0 0 0 0 0 0 0 0
ADDR
BERR
RXNE
ARLO
STOP
OVR
Res.
Res.
Res.
Res.
Res.
Res.
TXE
BTF
SB
AF
I2C_SR1
F
0x14
Reset value 0 0 0 0 0 0 0 0 0 0
BUSY
CALL
GEN-
Res.
Res.
Res.
Res.
Res.
Res.
Res.
Res.
Res.
Res.
Res.
Res.
MSL
TRA
I2C_SR2
0x18
Reset value 0 0 0 0
Res.
Res.
DUT
F/S
I2C_CCR CCR[11:0]
Y
0x1C
Reset value 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Res
Res
Res
Res
Res
Res
Res
Res
Res
Res
I2C_TRISE TRISE[5:0]
.
0x20
Reset value 0 0 0 0 1 0
254/305
PY32F002B 参考手册
2 0 . 通 用 同 步 异 步 收 发 器 ( U S AR T )
20.1. 介绍
通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之
间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。
它支持同步单向通信和半双工单线通信。它还允许多处理器通信。
255/305
PY32F002B 参考手册
256/305
PY32F002B 参考手册
PWDATA PRDATA
Write DATA REGISTER(DR)
CPU CPU
Transmit data Receive data
register(TDR) register(RDR)
TX IrDA
SIR
RX Transmit shift register Receive shift register
EDDEC
BLOCK
GTPR
GT PSC CK CONTROL CK
CR3 CR2
SCEN NACK HD IRLP IREN LINE STOP[1 :0] CKEN CPOL CPHA LBCL
CR2 CR1
USART Address UE M WAKE PCE PS PEIE
RTS HARDWARE
FLOW
CTS CONTROLLER
Receiver
TRANSMIT WAKE RECEIVER clock
CONTROL UP UNIT CONTROL
CR1 SR
RXN E RW
TXEIE TCIE IDLE IE TE RE SBK CTS LBD TXE TC RXN E IDLE ORE NE FE PE
IE U
USART INTREEUPT
CONTROL
USART_BRR
TE TRANSMIT RATE
CONTROL
/16 /USARTDIV
DIV_Mantissa DIV_Fraction
fPCL Kx 15 4 0
(x=1 ,2)
RECEIVER RATE
RE CONTROL
Conventional baud rate generation
图 20-1 USART 框图
257/305
PY32F002B 参考手册
Data Possible
parity Next Next data frame
frame
Start bit start
bit Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 Bit8 Stop bit
bit
Clock **
Start
bit
Idle frame
Start
Break frame bit
Stop
bit
** LBCL bit controls last data clock pulse
8 bit word length(M bit is reset),1 stop bit
Data Possible
parity Next Next data frame
frame
Start bit start
bit Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 Stop bit
bit
Clock
**
Start
bit
Idle frame
Start
Break frame bit
Stop
bit
** LBCL bit controls last data clock pulse
图 20-2 字长设置
20.3.2. 发送器
20.3.2.1. 字符发送
在 USART 发送期间,在 TX 引脚上首先移出数据的最低有效位。在此模式 USART_DR 寄存器包含了一个
内部总线和发送移位寄存器之间的缓冲器。
每个字符之前都有一个低电平的起始位;之后跟着的停止位,其数目可配置。USART 支持多种停止位的配
置:1 和 2 个停止位。
注:
在数据传输期间不能复位 TE 位,否则将破坏 TX 脚上的数据,因为波特率计数器停止计数。正在传输的当
前数据将丢失。
TE 位被激活后将发送一个空闲帧。
20.3.2.2. 可配置的停止位
随每个字符发送的停止位的位数可以通过控制寄存器 2 的位 13、12 进行编程。
1) 1 个停止位:停止位位数的默认值。
2) 2 个停止位:可用于常规 USART 模式、单线模式以及调制解调器模式。
空闲帧包括了停止位。
258/305
PY32F002B 参考手册
Data Possible
a) 1 stop bit
parity Next Next data frame
frame
Start bit start
bit Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 Stop bit
bit
Clock
图 20-3 配置停止位
配置步骤:
1) 通过在 USART_CR1 寄存器上置位 UE 位来激活 USART
2) 编程 USART_CR1 的 M 位来定义字长。
3) 在 USART_CR2 中编程停止位的位数。
4) 利用 USART_BRR 寄存器选择要求的波特率。
5) 设置 USART_CR1 中的 TE 位,发送一个空闲帧作为第一次数据发送。
6) 把要发送的数据写进 USART_DR 寄存器(此动作清除 TXE 位)。在只有一个缓冲器的情况下,对每个待发送
的数据重复步骤 7。
7) 在 USART_DR 寄存器中写入最后一个数据字后,要等待 TC=1,它表示最后一个数据帧的传输结束。当需要
关闭 USART 或需要进入停机模式之前,需要确认传输结束,避免破坏最后一次传输。
20.3.2.3. 单字节通信
清零 TXE 位总是通过对数据寄存器的写操作来完成的。TXE 位由硬件来设置,它表明:
数据已经从 TDR 移送到移位寄存器,数据发送已经开始
TDR 寄存器被清空
下一个数据可以被写进 USART_DR 寄存器而不会覆盖先前的数据
如果 TXEIE 位被设置,此标志将产生一个中断。
如果此时 USART 正在发送数据,对 USART_DR 寄存器的写操作把数据存进 TDR 寄存器,并在当前传输
结束时把该数据复制进移位寄存器。
如果此时 USART 没有在发送数据,处于空闲状态,对 USART_DR 寄存器的写操作直接把数据放进移位寄
存器,数据传输开始,TXE 位立即被置起。
当一帧发送完成时(停止位发送后)并且设置了 TXE 位,TC 位被置起,如果 USART_CR1 寄存器中的 TCIE
位被置起时,则会产生中断。
在 USART_DR 寄存器中写入了最后一个数据字后,在关闭 USART 模块之前或设置微控制器进入低功耗模
式(详见下图)之前,必须先等待 TC=1。
使用下列软件过程清除 TC 位:
1.读一次 USART_SR 寄存器;
259/305
PY32F002B 参考手册
Idle
Frame 1 Frame 2 Frame 3
preamble
TX line
USART_DR F1 F2 F3
TC flag
Set by hardware
Software Software waits
enables the Until TXE=1 and writes F2 TC is not set TC is not set TC is set because
USART into DR because TXE=0 because TXE=0 TXE=1
20.3.2.4. 断开符号
设置 SBK 可发送一个断开符号。断开帧长度取决 M 位。如果设置 SBK=1,在完成当前数据发送后,将在
TX 线上发送一个断开符号。断开字符发送完成时(在断开符号的停止位时)SBK 被硬件复位。USART 在最后一
个断开帧的结束处插入一逻辑’1’,以保证能识别下一帧的起始位。
注意:如果在开始发送断开帧之前,软件又复位了 SBK 位,断开符号将不被发送。如果要发送两个连续的
断开帧, SBK 位应该在前一个断开符号的停止位之后置起。
20.3.2.5. 空闲符号
置位 TE 将使得 USART 在第一个数据帧前发送一空闲帧。
20.3.3. 接收器
20.3.3.1. 开始位检测
在 USART 中,如果辨认出一个特殊的采样序列,那么就认为侦测到一个起始位。该序列为: 1 1 1 0 X 0
X0X0000
260/305
PY32F002B 参考手册
RX line
ideal
sample 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
clock
Sample
values
real
sample
clock X X X X X X X X 9 10 11 12 13 14 15 16
6/16
7/16 7/16
1 1 1 0 X 0 X 0 X 0 0 0 0 X X X X X X
At least 2 At least 2
Falling edge
bits out of 3 bits out of 3
detection
at 0 at 0
图 20-5 开始位检测
如果该序列不完整,那么接收端将退出起始位侦测并回到空闲状态(不设置标志位)等待下降沿。如果 3 个采
样点都为’0’(在第 3、5、7 位的第一次采样,和在第 8、9、10 的第二次采样都为’0’),则确认收到起始位,这时
设置 RXNE 标志位,如果 RXNEIE=1,则产生中断。
如果两次 3 个采样点上仅有 2 个是’0’(第 3、5、7 位的采样点和第 8、9、10 位的采样点),那么起始位仍然
是有效的,但是会设置 NE 噪声标志位。如果不能满足这个条件,则中止起始位的侦测过程,接收器会回到空闲
状态(不设置标志位)。
如果有一次 3 个采样点上仅有 2 个是’0’(第 3、5、7 位的采样点或第 8、9、10 位的采样点),那么起始位仍
然是有效的,但是会设置 NE 噪声标志位。
20.3.3.2. 字符接收
在 USART 接收期间,数据的最低有效位首先从 RX 脚移进。在此模式里, USART_DR 寄存器包含的缓冲
器位于内部总线和接收移位寄存器之间。
配置步骤:
1. 将 USART_CR1 寄存器的 UE 置 1 来激活 USART。
2. 编程 USART_CR1 的 M 位定义字长
3. 在 USART_CR2 中编写停止位的个数
4. 利用波特率寄存器 USART_BRR 选择希望的波特率。
5. 设置 USART_CR1 的 RE 位。激活接收器,使它开始寻找起始位。
当一字符被接收到时:
● RXNE 位被置位。它表明移位寄存器的内容被转移到 RDR。换句话说,数据已经被接收并且可以被读出(包括
与之有关的错误标志)。
● 如果 RXNEIE 位被设置,产生中断。
● 在接收期间如果检测到帧错误,噪音或溢出错误,错误标志将被置起
261/305
PY32F002B 参考手册
20.3.3.3. 断开符号
当接收到一个断开帧时,USART 像处理帧错误一样处理它。
20.3.3.4. 空闲符号
当一空闲帧被检测到时,其处理步骤和接收到普通数据帧一样,但如果 IDLEIE 位被设置将产生一个中断。
20.3.3.5. 溢出错误
如果 RXNE 还没有被复位,又接收到一个字符,则发生溢出错误。数据只有当 RXNE 位被清零后才能从移
位寄存器转移到 RDR 寄存器。 RXNE 标记是接收到每个字节后被置位的。如果下一个数据已被收到, RXNE
标志仍是置起的,溢出错误产生。
当溢出错误产生时:
● ORE 位被置位。
● RDR 内容将不会丢失。读 USART_DR 寄存器仍能得到先前的数据。
● 移位寄存器中以前的内容将被覆盖。随后接收到的数据都将丢失。
● 如果 RXNEIE 位被设置或 EIE 被设置,中断产生。
● 顺序执行对 USART_SR 和 USART_DR 寄存器的读操作,可复位 ORE 位
注意:当 ORE 位置位时,表明至少有 1 个数据已经丢失。有两种可能性:
● 如果 RXNE=1,上一个有效数据还在接收寄存器 RDR 上,可以被读出。
● 如果 RXNE=0,这意味着上一个有效数据已经被读走,RDR 已经没有东西可读。当上一个有效数据在 RDR
中被读取的同时又接收到新的(也就是丢失的)数据时,此种情况可能发生。在读序列期间(在 USART_SR 寄存器
读访问和 USART_DR 读访问之间)接收到新的数据,此种情况也可能发生。
20.3.3.6. 噪音错误
使用过采样技术(同步模式除外),通过区别有效输入数据和噪音来进行数据恢复。
RX line
Sampled values
sample
clock 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
6/16
7/16 7/16
图 20-6 检测噪声的数据采样
表 20-1 检测噪声的数据采样
采样值 NE 状态 接收的位值 数据有效性
000 0 0 Valid
001 1 0 Not Valid
262/305
PY32F002B 参考手册
当在接收帧中检测到噪音时:
● 在 RXNE 位的上升沿设置 NE 标志。
● 无效数据从移位寄存器传送到 USART_DR 寄存器。
● 在单个字节通信情况下,没有中断产生。然而,因为 NE 标志位和 RXNE 标志位是同时被设置, RXNE
将产生中断。在多缓冲器通信情况下,如果已经设置了 USART_CR3 寄存器中 EIE 位,将产生一个中断。
先读出 USART_SR,再读出 USART_DR 寄存器,将清除 NE 标志位
20.3.3.7. 帧错误
当以下情况发生时检测到帧错误:
由于没有同步上或大量噪音的原因,停止位没有在预期的时间上接和收识别出来。
当帧错误被检测到时:
● FE 位被硬件置起
● 无效数据从移位寄存器传送到 USART_DR 寄存器。
● 在单字节通信时,没有中断产生。然而,这个位和 RXNE 位同时置起,后者将产生中断。在多缓冲器通
信情况下,如果 USART_CR3 寄存器中 EIE 位被置位的话,将产生中断。
顺序执行对 USART_SR 和 USART_DR 寄存器的读操作,可复位 FE 位。
20.3.3.8. 接收期间的可配置的停止位
接收期间的可配置的停止位被接收的停止位的个数可以通过控制寄存器 2 的控制位来配置,在正常模式
时,可以是 1 或 2 个。
1 个停止位:对 1 个停止位的采样在第 8,第 9 和第 10 采样点上进行。
2 个停止位:对 2 个停止位的采样是在第一停止位的第 8,第 9 和第 10 个采样点完成的。如果第一个
停止位期间检测到一个帧错误,帧错误标志将被设置。第二个停止位不再检查帧错误。在第一个停止
位结束时 RXNE 标志将被设置。
20.3.4. 分数波特率的产生
263/305
PY32F002B 参考手册
Mantissa (USARTDIV) = 27
Fraction (USARTDIV) = 12/16 = 0.75
所以 USARTDIV = 27.75
例 2:
要求 USARTDIV = 25.62,
就有:
DIV_Fraction = 16*0.62 = 9.92
最接近的整数是: 10 = 0x0A
DIV_Mantissa = mantissa (25.620) = 25 = 0x19
于是, USART_BRR = 0x19A
例 3:
要求 USARTDIV = 50.99
就有:
DIV_Fraction = 16*0.99 = 15.84
最接近的整数是:16 = 0x10 => DIV_frac[3:0]溢出 => 进位必须加到小数部分
DIV_Mantissa = mantissa (50.990 + 进位) = 51 = 0x33
于是:USART_BRR = 0x330,USARTDIV=51
264/305
PY32F002B 参考手册
是否使用分数波特率产生
表 20-2 DIV_Fraction 为 0 时 USART 接收器的容忍度
M bit NF is an error NF is don’t care
0 3.75% 4.375%
1 3.41% 3.97%
20.3.7. 多处理器通信
265/305
PY32F002B 参考手册
未被寻址的设备可启用其静默功能置于静默模式。在静默模式里:
任何接收状态位都不会被设置。
所有接收中断被禁止。
USARTx_CR1 寄存器中的 RWU 位被置 1。RWU 可以被硬件自动控制或在某个条件下由软件写入。
根据 USARTx_CR1 寄存器中的 WAKE 位状态,USARTx 可以用二种方法进入或退出静默模式。
如果 WAKE 位被复位:进行空闲总线检测。
如果 WAKE 位被设置:进行地址标记检测。
20.3.7.1. 空闲总线检测(WAKE=0)
当 RWU 位被写 1 时, USART 进入静默模式。当检测到一空闲帧时,它被唤醒。然后 RWU 被硬件清零,
但是 USART_SR 寄存器中的 IDLE 位并不置起。 RWU 还可以被软件写 0。下图给出利用空闲总线检测来唤醒
和进入静默模式的一个例子
RXNE RXNE
图 20-7 利用空闲总线检测的静默模式
In this example, the current address of the receiver RXNE RXNE RXNE
is 1(programmed in the USART_CR2 register)
RX IDLE Addr=0 Data 1 Data 2 IDLE Addr=1 Data 3 Data 4 Addr=2 Data 5
Non-matching address
Matching address Non-matching address
RWU written to 1
(RXNE was cleared)
图 20-8 利用地址标记检测的静默模式
266/305
PY32F002B 参考手册
20.3.7.3. 校验控制
设置 USART_CR1 寄存器上的 PCE 位,可以使能奇偶控制(发送时生成一个奇偶位,接收时进行奇偶校
验)。根据 M 位定义的帧长度,可能的 USART 帧格式列在下表中。
表 20-4 帧格式
M bit PCE bit USART fram
0 0 SB—8 bit data—STB
0 1 SB—7 bit data—PB—STB
1 0 SB—9 bit data—STB
1 1 SB—8 bit data—PB—STB
在用地址标记唤醒设备时,地址的匹配只考虑到数据的 MSB 位,而不用关心校验位。 (MSB 是数据位中最
后发出的,后面紧跟校验位或者停止位)
20.3.7.4. 偶校验
校验位使得一帧中的 7 或 8 个 LSB 数据以及校验位中’1’的个数为偶数。
例如:数据=00110101,有 4 个’1’,如果选择偶校验(在 USARTx_CR1 中的 PS=0),校验位将是’0’。
20.3.7.5. 奇校验
此校验位使得一帧中的 7 或 8 个 LSB 数据以及校验位中’1’的个数为奇数。
例如:数据=00110101,有 4 个’1’,如果选择奇校验(在 USARTx_CR1 中的 PS=1),校验位将是’1’。
20.3.7.6. 传输模式
如果 USARTx_CR1 的 PCE 位被置位,写进数据寄存器的数据的 MSB 位被校验位替换后发送出去(如果选
择偶校验偶数个’1’,如果选择奇校验奇数个’1’)。如果奇偶校验失败,USART_SR 寄存器中的 PE 标志被置’1’,
并且如果 USART_CR1 寄存器的 PEIE 在被预先设置的话,中断产生。
267/305
PY32F002B 参考手册
RX Data out
TX Data in
Synchronous device
USART
(e.g. slave SPI)
CK clock
Clock(CPOL=0,CPHA=0)
Clock(CPOL=0,CPHA=1)
Clock(CPOL=1,CPHA=0)
Clock(CPOL=1,CPHA=1)
Data on TX
(from master) 0 1 2 3 4 5 6 7
Start LSB MSB Stop
Data on RX
0 1 2 3 4 5 6 7
(from slave)
LSB MSB
Capture strobe
Clock(CPOL=0,CPHA=0)
Clock(CPOL=0,CPHA=1)
Clock(CPOL=1,CPHA=0)
Clock(CPOL=1,CPHA=1)
Data on TX
(from master) 0 1 2 3 4 5 6 7 8
Start LSB MSB Stop
Data on RX
0 1 2 3 4 5 6 7 8
(from slave)
LSB MSB
Capture strobe
268/305
PY32F002B 参考手册
CK(capture strobe on CK
rising edge in this example)
Data on RX
(from slave)
tSETUP tHOLD
图 20-12 RX 数据采样/保持时间
20.3.9. 单线半双工通信
20.3.10. 硬件流控制
USART1 USART2
TX RX
TX circuit CTS RTS TX circuit
RX TX
RX circuit RTS CTS RX circuit
269/305
PY32F002B 参考手册
RTS
Data 1 read
Data 2 can now be RXNE
RXNE transmitted
CTS CTS
CTS
transmit data register
TDR Data 2 empty Data 3 empty
270/305
PY32F002B 参考手册
TC
TCIE
TXE
TXEIE
CTS
CTSIE
IDLE USART
IDLEIE interrupt
RXNEIE
ORE
RXNEIE
RXNE
PE
PEIE
LBD
LBDIE
FE
NE
ORE EIE
DMAR
Address offset:0x00
Reset value:0x0000 00C0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Re Re Re Re Re Re Re
Res Res Res Res Res Res Res Res Res
s s s s s s s
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Re Re Re ABRR ABR ABR Re TX IDL OR
CTS TC RXNE NE FE PE
s s s Q E F s E E E
RC_W RC_W RC_W
W R R R R R R R R
0 0 0
271/305
PY32F002B 参考手册
272/305
PY32F002B 参考手册
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Res Res Res Res Res Res Res DR[8:0]
RW RW RW RW RW RW RW RW RW
273/305
PY32F002B 参考手册
Address offset:0x08
Reset value:0x0000_0000
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Res Res Res Res Res Res Res Res Res Res Res Res Res Res Res Res
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
DIV_Mantissa[11:0] DIV_Faction[3:0]
RW RW RW RW RW RW RW RW RW RW RW RW RW RW RW RW
在自动波特率检测模式,硬件更新该寄存器。
Bit Name R/W Reset Value Function
31:16 Reserved RES - Reserved
15:4 DIV_Mantissa[15:4] RW 0 12bit 整数
3:0 DIV_Fraction[3:0] RW 0 4bit 小数
Address offset:0x0C
Reset value: 0x0000_0000
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Re Re Re Re Re Re Re Re
Res Res Res Res Res Res Res Res
s s s s s s s s
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Re Re WAK PC PEI TXEI TCI RXNEI IDLEI RW Re
UE M PS TE RE
s s E E E E E E E U s
RW RW RW RW RW RW RW RW RW RW RW RW RW
274/305
PY32F002B 参考手册
275/305
PY32F002B 参考手册
Address offset:0x10
Reset value: 0x0000_0000
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Res Res Res Res Res Res Res Res Res Res Res Res Res Res Res Res
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Res Res STOP Res CLKEN CPOL CPHA LBCL Res Res Res Res ADD[3:0]
RW RW RW RW RW RW RW RW RW
12 Reserved
CK pin 使能。
0:禁止;
11 CLKEN RW 0
1:CK pin 使能;
不支持同步模式时,该位保留。
时钟极性。
同步模式,CK pin 输出时钟极性。
10 CPOL RW 0
0:传输窗外,CK pin 为稳定低值;
1:传输窗外,CK pin 为稳定高值;
该位在同步模式下用于选择 CK pin 输出时钟的相
位。它与 CPOL 位一起工作,以产生所需的时钟/
9 CPHA RW 0 数据关系。
0:第一个时钟传输是首个数据捕获沿;
1:第二个时钟传输是首个数据捕获沿;
最后一位数据的时钟脉冲是否在 CK pin 输出。
8 LBCL RW 0 0:最后一位数据的时钟脉冲不在 CK pin 输出;
1:最后一位数据的时钟脉冲在 CK pin 输出;
7:4 Reserved RES - Reserved
USART 地址。
3:0 ADD[3:0] RW 4’b0 该寄存器用于多处理器 mute 模式,用作 4bit 地
址唤醒时的地址。
276/305
PY32F002B 参考手册
Address offset:0x14
Reset value: 0x0000_0000
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Res Res Res Res Res Res Res Res Res Res Res Res Res Res Res Res
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ABR- ABR
Res OVER8 CTSIE CTSE RTSE Res Res Res Res HDSEL Res Res EIE
MOD[1:0] EN
RW RW RW RW RW RW RW RW
277/305
t
x
x
x
x
x
x
x
8
1
0
4
1
0
0
1
0
0
0
8
0
0
4
0
0
0
0
0
e
s
ff
C
O
3
2
1
R
ue
ue
ue
ue
ue
ue
T_
T_
T_
T_
T_
T_
val
val
val
val
val
val
Re
ter
set
set
set
set
set
set
US
US
US
US
US
US
AR
AR
AR
BR
AR
AR
SR
AR
ser
CR
CR
CR
DR
gis
ved
Re-
Re-
Re-
Re-
Re-
Re-
Re-
20.5.7.
0
Res. MOD[1:0] STOP UE Res. Res. 13
Res. ABREN Res. M Res. ABRRQ 12
Res. OVER8 CLKEN WAKE Res. ABRE 11
Res. CTSIE CPOL PCE Res. ABRF 10
0 0 0 0
0 0 0 0 0 0 0
0 0 0 0
Res. RTSE LBCL PEIE Res. 8
DIV_Mantissa[11:0]
0
Res. HDSEL TE ORE 3
Res. Res. RE DIV_Fac- NE 2
ADD[3:0]
tion[3:0]
0 0 0 0 0 0 0 0 0 0 0 0 0
0
0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0
PY32F002B 参考手册
278/305
Res. EIE Res. PE 0
PY32F002B 参考手册
21.1. 简介
串行外设接口(SPI)允许芯片与外部设备以半双工、全双工、单工同步的串行方式通信。此接口可以被配置
成主模式,并为外部从设备提供通信时钟(SCK)。接口还能以多主配置方式工作。
它可用于多种用途,包括使用一条双向数据线的双线单工同步传输。
21.3.1. 概述
279/305
PY32F002B 参考手册
APB bus
Read
FRX
RxFIFO 0 0 0
TH
DS 0 0 0
SPI_CR2
MOSI
TXE RXNE ERR
0 0 SSOE 0 0
IE IE IE
MISO Data shift register
LSB First
0 0 0 FTLVL FTLVL FRLVL FRLVL 0
TxFIFO SPI_SR
MOD
BSY OVR 0 0 0 TXE RXNE
Write F
0
Communication control
1
BR[2:0]
SCK Baud rate generator
LSB
SPE BR2 BR1 BR0 MSTR CPOL CPHA
FIRST
SPI_CR1
BIDI
BIDI RX
Master control logic MOD 0 0 0 SSM SSI
OE ONLY
E
NSS
图 21-1 SPI 框图
SPI 通过 4 个引脚与外部器件相连:
MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。
MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。
SCK:串口时钟,作为主设备的输出,从设备的输入。
NSS:从设备选择。取决于 SPI 和 NSS 的设定,该 pin 可以用作:
─ 选择要通讯的从机
─ 同步数据帧
─ 发现多主机间的冲突
SPI 总线允许在一个主机和一个或者多个从机之间的通讯。总线由至少两根线组成:一个是时钟,另一个是
被同步传输的数据。根据应用场景,可以选择增加另外一根数据线和从机 NSS 信号。
21.3.2. 单主机和单从机通信
21.3.2.1. 全双工通信
缺省情况,SPI 被配置成全双工通讯。在这种配置下,主机和从机的 shift 寄存器,在 MOSI 和 MISO 之
间,使用两个单向的线连到一起。在 SPI 通讯期间,数据在主机提供的时钟沿同步的被移位。主机通过 MOSI
发送数据,从 MISO 接收来自从机的数据。当数据帧传输完成(所有 bit 被 shift 完成),在主机和从机之间的信
息就被交互过了。
280/305
PY32F002B 参考手册
MISO MISO
RX shift register TX shift register
MOSI MOSI
TX shift register RX shift register
图 21-2 全双工单主机/单从机应用
21.3.2.2. 半双工通信
通过设定 BIDIMODE bit(SPI_CR1 寄存器),SPI 可以工作在半双工模式。在这种配置下,用 1 根数据线
完成主机和从机 shift 寄存器的连接。在通讯过程中,在 SCK 的时钟沿,数据在两个 shift 寄存器之间以 BIDIOE
(SPI_CR1 寄存器)选择的方向,同步移位。在该配置下,主机的 MISO 和从机的 MOSI 被释放作为通用端口
给其他应用使用。
MISO MISO
RX shift register TX shift register
图 21-3 半双工单主机/单从机应用
NSS 可以被使用在主机和从机之间进行硬件控制流。可选的,NSS 也可以不使用。然后该流程就要内部处
理。
21.3.2.3. 单工通信
通过使用 RXONLY(SPI_CR1 寄存器),设定 SPI 在只发送模式或者只接收模式,使 SPI 工作在单线模
式下。在这个配置下,在主机和从机的 shift 寄存器之间只使用 1 根线。另一对 MISO 和 MOSI 不被使用,可以
被释放成通用端口。
只发送模式(RXONLY=0):配置与全双工相同。应用忽略在未使用的端口上的信息。这个端口可以被用
作标准的 GPIO。
只接收模式(RXONLY=1):通过置位 RXONLY,应用可以禁能 SPI 输出功能。在从机配置,MISO 输出
被禁能,该端口被用作 GPIO。当他的从机 NSS 信号有效时,从机继续从 MOSI 接收数据。接收到的数据
事件是否发生取决于数据 buffer 的配置。在主机配置下,MOSI 输出被禁能,该端口可以用作 GPIO。只要
SPI 被使用,时钟信号就被连续的产生。停止时钟的唯一方法是清零 RXONLY 或者 SPE,直到来自 MISO
的输入完成。
281/305
PY32F002B 参考手册
MISO MISO
RX shift register TX shift register
MOSI MOSI
TX shift register RX shift register
图 21-4 单工单从机/单主机应用
(主设备处于仅发送模式/从设备处于仅接收模式)
(1)在主机和从机之间可以使用 NSS 进行硬件控制流。可选的,NSS 也可以不使用。然后该流程就要内部处
理。
(2)在 Rx shift 寄存器的输入捕获意外的输入信息。在标准的 transmit-only 模式下,所有与传输接收相关的事
件都被必须被忽略。
(3)在该配置下,两边的 MISO pin 都被用作 GPIO。
通过用传输方向的设定(在 BIDIOE bit 未发生改变时,双向模式被使能),任何 simplex 通讯可以被 half-
duplex 通讯代替。
21.3.3. 多从机通信
282/305
PY32F002B 参考手册
NSS
MISO MISO
RX shift register TX shift register
MOSI MOSI
TX shift register RX shift register
IO3
MISO
TX shift register
SCK
NSS
Slave 2
MISO
TX shift register
SCK
NSS
Slave 3
图 21-5 主机与三个独立的从机通信
NSS 在这种配置下在主机端未被使用。必须通过 SSM=1, SSI=1 来防止任何 MODF 错误。
由于从机的 MISO 连接到一起,所有从机必须把他们 MISO 的 GPIO 配置作为 AF open-drain。
21.3.4. 多主机通信
283/305
PY32F002B 参考手册
MISO MISO
RX shift register TX shift register
MOSI MOSI
TX shift register RX shift register
21.3.5. 从选择(NSS)脚管理
284/305
PY32F002B 参考手册
NSS Iutput
0
NSS GOIO
Pin logic NSS Master Slave
Inp. mode mode
Vdd OK Non active
Vss Conflict OK
21.3.6. 通讯格式
285/305
PY32F002B 参考手册
CPHA=1
CPOL=1
CPOL=0
NSS
Capture strobe
CPHA=0
CPOL=1
CPOL=0
NSS
Capture strobe
图 21-8 数据时钟时序图
数据 bit 的顺序取决于 LSBFIRST bit 的设定。
21.3.6.2. 数据帧格式
通过 LSBFIRST bit(SPI_CR1 寄存器),SPI shift 寄存器可以设定为 MSB-FIRST 或者 LSB-FIRST。通过使
用 DS bit(SPI_CR2 寄存器),选择数据帧的位数。可选择为 8 位或者 16 位长度,该设置对于发送和接收都适
用。
21.3.7. SPI 配置
对于主机和从机,SPI 的配置流程几乎一样。对于具体的模式建立,遵循专门的章节介绍。当进行标准的通
讯,进行以下步骤:
1. 写相关的 GPIO 寄存器:配置 MOSI、MISO 和 SCK pin
2. 写 SPI_CR1 寄存器
1) 通过 BR[2:0]配置时钟波特率(从机模式不需要)
2) 配置 CPOL 和 CPHA
3) 通过 RXONLY 或者 BIDIMODE 和 BIDIOE(RXONLY 和 BIDIMODE 不能同时有效),选择 simplex 或
者 half-duplex 模式
4) 配置 LSBFIRST
5) 配置 SSM 和 SSI
286/305
PY32F002B 参考手册
21.3.9. 数据传输和接收流程
287/305
PY32F002B 参考手册
288/305
PY32F002B 参考手册
NSS
SCK
16-bit access when write to data register 16-bit access when read from data register
SPI_DR=0x040A when TXE=1 SPI_DR=0x040A when RXNE=1
5. 在 Data packed mode, TxE 和 RxNE 事件是成对出现的,每个读/写 FIFO 的访问是 16bit 宽(until the
number of data frames are even)。如果 TxFIFO 是 3/4 full,FTLVL 状态停在 FIFO full level。这就是为什
么最后一个奇数 frame 不能在 TxFIFO 变成 1/2 full 之前存储。该数据 frame 以 8-bit 的访问方式存储在
TxFIFO 中。
289/305
PY32F002B 参考手册
NSS
SCK
2 2 2 2
BUSY
D0 D1 D2 D3 D4
SPE
Enable Tx/Rx interrupts
FTLVL 00 10 11 10 11 10 01 00
4 Thandling
Note 1
TXE
3 3
1
Dn Dn+1 Dn+2 Dn+3 Dn+4
MISO 7 6 543 21076 543 2 1 07 6 543 21 07 6 5 43 21 0 76 543 21 0
RXNE
FRLVL 00 01 10 00 01 10 00 01 00
21.3.10.3. 忙(Busy)标志(BSY)
BSY 标志由硬件设置与清除(写入此位无效果),此标志表明 SPI 通信层的状态。
当它被设置为’1’时,表明 SPI 正忙于通信,但有一个例外:在主模式的双向接收模式下(MSTR=1、BDM=1
并且 BDOE=0),在接收期间 BSY 标志保持为低。
在软件要关闭 SPI 模块并进入停机模式(或关闭设备时钟)之前,可以使用 BSY 标志检测传输是否结束,这
样可以避免破坏最后一次传输,因此需要严格按照下述过程执行。
BSY 标志还可以用于在多主机系统中避免写冲突。
除了主模式的双向接收模式(MSTR=1、BDM=1 并且 BDOE=0),当传输开始时, BSY 标志被置’1’。
以下情况该标志将被清除为’0’:
● 当 SPI 被正确的 disable 掉
● 主机模式,当产生 MODF=1
● 主机模式,当传输完成,不再有效数据要发送
● 从机模式,在每个数据传输之间,BSY 标志置为 0,并保持至少一个 SPI 时钟周期
290/305
PY32F002B 参考手册
21.3.11. 错误标志
21.3.11.1. 主模式失效(MODF)
主模式失效(MODF)仅发生在:当 NSS 作为输入信号(SSOE=0),NSS 引脚硬件模式管理下,主设备
的 NSS 脚被拉低;或者在 NSS 引脚软件模式管理下,SSI 位被置为’0’时。此时,MODF 位被自动置位。主模
式失效对 SPI 设备有以下影响:
● MODF 位被置为’1’,如果设置了 ERRIE 位,则产生 SPI 中断;
● SPE 位被清为’0’。这将停止一切输出,并且关闭 SPI 接口;
● MSTR 位被清为’0’,因此强迫此设备进入从模式。
下面的步骤用于清除 MODF 位:
1. 当 MODF 位被置为’1’时,执行一次对 SPI_SR 寄存器的读或写操作;
2. 然后写 SPI_CR1 寄存器。
在有多个 MCU 的系统中,为了避免出现多个从设备的冲突,必须先拉高该主设备的 NSS 脚,再对 MODF
位进行清零。在完成清零之后, SPE 和 MSTR 位可以恢复到它们的原始状态。
出于安全的考虑,当 MODF 位为’1’时,硬件不允许设置 SPE 和 MSTR 位。
通常配置下,从设备的 MODF 位不能被置为’1’。然而,在多主配置里,一个设备可以在设置了 MODF 位的
情况下,处于从设备模式;此时,MODF 位表示可能出现了多主冲突。中断程序可以执行一个复位或返回到默
认状态来从错误状态中恢复。
21.3.11.2. 过载模式
当数据被主机或者从机接收,并且 RXFIFO 没有足够的空间存接收到的数据时,产生 over 正常运行情况。
如果软件没有足够的时间读走以前接收到的数据(RXFIFO 中存放),该情况就会发生。
当 over 正常运行情况发生,新收到的数据不会 overwrite 以前存放在 RXFIFO 的数据。接收到的新数据被
忽略,并且所有接下来发送的数据丢失。
依次读出 SPI_DR 寄存器和 SPI_SR 寄存器可将 OVR 清除。
21.3.12. SPI 中断
Address offset:0x00
Reset value:0x0000
291/305
PY32F002B 参考手册
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
BI-
BIDIO Re Re DF RXONL SS SS LSBFIR SP MST CPO CPH
DIMOD BR[2:0]
E s s F Y M I ST E R L A
E
R R R R R
RW RW RW RW RW RW RW RW RW
W W W W W
292/305
PY32F002B 参考手册
Address offset:0x04
Reset value:0x0000
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SLV
Res Res Res DS Res Res Res TXEIE RXNEIE ERRIE Res Res SSOE Res Res
FM
RW RW RW RW RW RW RW RW RW
293/305
PY32F002B 参考手册
Address offset:0x08
Reset value:0x0002
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
FTLVL FRLVL
Res Res Res Res BSY OVR MODF Res Res Res TXE RXNE
[1:0] [1:0]
R R R R R R R R R
294/305
PY32F002B 参考手册
Address offset:0x0C
Reset value:0x0000
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
DR[15:0]
RW RW RW RW RW RW RW RW RW RW RW RW RW RW RW RW
BIDIOE 14
13
12
11
RXONLY 10
LSBFIRS 7
0
DIMODE
MSTR
CPHA
CPOL
SSM
Res.
Res.
SPE
DFF
SSI
BI-
SPI_CR1 BR[2:0]
T
0x00
Reset value 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RXNEIE
SLVFM
ERRIE
TXEIE
SSOE
Res.
Res.
Res.
Res.
Res.
Res.
Res.
Res.
Res.
Res.
Res.
SPI_CR2
0x04
Reset value 0 0 0 0 0
FRLVL[1:
FTLVL[1:
MODEF
RXNE
OVR
Res.
Res.
Res.
Res.
Res.
Res.
Res.
BSY
TXE
0x08 SPI_SR
0]
0]
295/305
PY32F002B 参考手册
Offset Register
15
14
13
12
11
10
0
Reset value 0 0 0 0 0 0 0 1 0
SPI_DR DR[15:0]
0x0C
Reset value 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
296/305
PY32F002B 参考手册
22. 调试支持
22.1. 概况
本芯片基于 Cortex-M0+ CPU,该 CPU Core 包含高级 debug 硬件扩展功能。硬件调试模块允许内核在取
指(指令断点)或访问数据(数据断点)时停止。内核停止时,内核的内部状态和系统的外部状态都是可以查
询的。完成查询后,内核和外设可以被复原,程序将继续执行。
调试功能在由调试主机在连接和调试 MCU 时使用,调试的接口是 serial wire。在 M0+ CPU Core 中的调试
功能是一套 ARM CoreSight Design kit。
M0+提供了集成的片上调试支持,由以下部分组成:
SW-DP:serial wire
BPU:Break point unit
DWT:Data watchpoint trigger
调试支持也包括了本芯片的调试集成功能:
灵活的调试引脚分配,SWIO@PB6、SWCLK@PA2
MCU 调试盒(支持低功耗模式,控制外设时钟等
MCU
Cortex-M0+ debug support
Bus matrix
System
interface
Cortex-M0+
Core
DWT
BPU
图 22-1 DBG 框图
22.2. 引脚分布和调试端口脚
调试功能相关的端口有两个,在所有封装形式都可见。
表 22-1 DBG 框图
SW-DP SW 调试接口
引脚分配
端口引脚名称 类型 调试功能
SWDIO 输入/输出 串行数据输入/输出 PB6
297/305
PY32F002B 参考手册
SW-DP SW 调试接口
引脚分配
端口引脚名称 类型 调试功能
SWDCLK 输入 串行时钟 PA2
22.3. ID 代码和锁定机制
芯片内存放 ID code。推荐 Keil、IAR 等工具使用该 ID Code(位于 0x4001 5800 地址)锁住调试。
芯片上电后,硬件读取 flash 的 factory config. byte 的 0x1FFF 0FF8 地址,装载到 DBG_IDCODE 寄存器
中。
这是个同步的串行通讯协议,使用以下两个端口:
SWCLK:来自主机给芯片的 clock 信号
SWDIO:双向数据信号
该协议允许两个 bank 的寄存器(DPACC 寄存器和 APACC 寄存器)被读和写入。数据位是按照在线上的
LSB-first 传输。对于 SWDIO 的双向管理,线上必须在板级上拉(推荐 100k 欧的电阻)。
在协议中每次 SWDIO 方向的改变,转向时间被插入在线上既没有被主机,也没有被芯片驱动的情况。缺
省状态下,这个转向时间是 1 个位的时间,然而整个可以通过配置 SWCLK 频率来调整。
每个序列由以下阶段组成:
主机发送的包请求(8bits)
芯片发送的应答响应(3bits)
主机或者芯片的数据发送阶段(33bits)
298/305
PY32F002B 参考手册
表 22-2 请求包(8-bits)
比特位 名称 描述
0 Start 必须为“1”
0:DP 访问
1 ApnDP
1:AP 访问
0:写请求
2 RnW
1:读请求
4:3 A[3:2] DP 或者 AP 寄存器的地址区域
5 Parity 以前位的校验位
6 Stop 0
7 Park 没有被主机驱动。由于上拉属性,会被芯片读出 1。
通常转向时间(缺省为 1bit)跟随着包请求,此时主机和芯片都没有驱动信号线。
299/305
PY32F002B 参考手册
当 ApnDP=0 时,可以访问这些寄存器。
CTRLSEL 位或者
A[3:2] R/W Register Notes
SELECT 寄存器
00 Read IDCODE
00 Write ABORT
01 Read/Write 0 DP-CTRL/STAT
01 Read/Write 1 WIRE CONTROL
10 Read READ RESEND
10 Write SELECT
11 Read/Write READ BUFFER
22.5. 内核调试
通过 core debug 寄存器,可以访问 Core debug。Debug 访问这些寄存器是通过 debug 访问端口。他由下
面四个寄存器组成
表 22-5 内核调试寄存器
寄存器 描述
DHCSR 32bit Debug halting control and status register
DCRSR 17bit Debug Core register selector register
DHCDR 32bit debug Core register Data register
DEMCR 32bit debug exception and monitor control register
这些寄存器不会被系统复位,复位掉。他们进会被上电复位,复位掉。为了在复位时 Hart,需要:
调试和例外监视控制寄存器的 bit0(VC_CORRESET),被使能
调试停止控制和状态寄存器,被使能
300/305
PY32F002B 参考手册
22.6.1. BPU 功能
处理器断点实现基于 PC 的断点功能。
参考 ARMv6-M ARM 和 ARM Coresight Components Technical Reference Manual,以获得更多关于 BPU
Coresight 的身份寄存器和他们的地址和访问种类。
22.7.1. DWT 功能
处理器的断点实现基于 PC 的断点功能。
实现数据 watchpoint 单元的处理器,也实现了 ARMv6-M 可选的 DWT Program Counter Sample regis-
ter(DWT_PCSR)。该寄存器允许调试者周期性的采样 PC,而不用停止处理器。这个机制提供了粗粒度分析。
CORTEX-M0+ DWT_PCSR 记录了通过了条件代码的指令和未通过的指令。
22.8.1. 低功耗模式的调试支持
301/305
PY32F002B 参考手册
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
DBG_
Res Res Res Res Res Res Res Res Res Res Res Res Res Res Res
STOP
RW
302/305
PY32F002B 参考手册
RW
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Res Res Res Res Res Res Res Res Res Res Res Res Res Res Res Res
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
DBG_ DBG_
Re Re Re Re Re Re Re Re Re Re Re Re Re Re
TIM14_STO TIM1_STO
s s s s s s s s s s s s s s
P P
RW RW
e r
t
DB
G_I
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
DC
0
OD
x
E
0
Re-
0
set
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
valu
e
303/305
t
x
x
x
0
0
8
0
0
4
0
0
e
s
ff
C
O
e
e
e
Z2
Z1
set
G_
set
G_
set
G_
AP
AP
DB
DB
DB
CR
Re-
Re-
Re-
iste
valu
valu
valu
B_F
B_F
Reg
0
Res. DBG_LPTIM_ST Res. 31
Res. OP
Res. Res. 30
Res. Res. Res. 29
Res. Res. Res. 28
Res. Res. Res. 27
Res. Res. Res. 26
Res. Res. Res. 25
Res. Res. Res. 24
Res. Res. Res. 23
Res. Res. Res. 22
Res. Res. Res. 21
Res. Res. Res. 20
Res. Res. Res. 19
Res. Res. Res. 18
Res. Res. Res. 17
Res. Res. Res. 16
0
DBG_TIM14_S Res. Res. 15
TOP
Res. Res. Res. 14
Res. Res. Res. 13
Res. Res. Res. 12
0
DBG_TIM1_ST Res. Res. 11
OP
Res. Res. Res. 10
Res. Res. Res. 9
Res. Res. Res. 8
Res. Res. Res. 7
Res. Res. Res. 6
Res. Res. Res. 5
Res. Res. Res. 4
Res. Res. Res. 3
Res. Res. Res. 2
0
OP
304/305
Res. Res. Res. 0
PY32F002B 参考手册
23. 版本历史
版本 日期 更新记录
V0.1 2022.11.20 初版
1. 更新COMP框图
V0.5 2023.09.28
2. 更新IWDG功能描述
305/305