【求助】CH32V003J4M6,引脚映射

从Avr转Risc-V,诸多不习惯

拿到了几个J4M6芯片(感谢沁恒),随手搞了个pcb(感谢嘉立创)。

开始尝试学习新的编程写法……但是,卡壳了。

mcu:CH32V003J4M6

IIC:TM1650

tm1650按照网络的例程跑起来了,没问题,这个写法和avr差不多。

串口这块我卡住了,mcu引脚分配如下,pin1 串口tx,pin2电源,pin3 tm1650的按键中断检测(还未实现),Pin4 电源,Pin5因为pin8冲突改为串口rx,pin6 软iic,pin7软iic,pin8 SWIO


很不理解的是,串口、iic、swio这些常用引脚,为什么会设计为冲突引脚。


然后我现在找不到一个简单纯粹的示例,如何把位于pin8的串口rx,修改到pin5上


望哪位大侠给一个纯粹的重映射代码段,让小白学习学习。

您好,关于CH32V003对应的引脚功能,具体可看CH32V003数据手册,如下图。MCU引脚都是有限的,尤其V003J4M6,SOP8封装,除去VCC和GND之后就只有6个引脚,为了容纳更多的外设和功能,不可避免要进行引脚的合封和重映射。关于引脚对应功能,根据封装和资源看手册描述即可,数据手册下载链接如下。此外,我们CH32V003 EVT都有提供Demo,可以参考一下。EVT下载链接如下。

数据手册:

https://www.wch.cn/downloads/CH32V003DS0_PDF.html 

EVT:

https://www.wch.cn/downloads/CH32V003EVT_ZIP.html 

image.png


资料我看过了的。从avr写法转到ch32v这种写法,完全不适应。

来这里求助是想要一个例程,不是官网发布的那种标准外设的。


只是想要一个纯粹的“端口重映射”代码段。


ps:sop8,如果我需要同时采用iic、串口,在同一个项目用官网的默认例程其实不能跑起来的。

按avr这边的惯例,大概率pin分配会设计为:pin1 tx,pin2 电源,pin3 晶振,pin4电源,pin5 iic,pin6 iic,pin7 swio,pin8 rx。也就是说默认io分配情况下,它不会产生pin8 在基础使用下同时冲突swio 和 rx。


您好,目前没有你所需的例程


我又新购买了一块003F4P6的开发板。

跑了一下例程里面的串口demo

EXAM\APPLICATION\SoftUART

*Presently Hardware connection:

PD2 -- Rx

PD4 -- Tx

按这个提示连接,串口软件上没有收发数据。


EXAM\USART\USART_Printf

按开发板芯片的复位后引脚功能,应该是PD5、PD6为串口功能,也没有收到数据。


这就很纳闷了。


PS:在b站上下了一个Eg3_usart的代码,终于能够看到数据了。PD5、PD6



根据手册003RM Page57/58页,重映射寄存器AFIO_PCFR1第21/2字节来看,我能实现J4M6上重映射Pin1和Pin5分别为Tx和Rx功能么?没有找到搭配项。@TECH62

谢谢~


CH32V003J4M6 无法、没必要重映射 UART。

从数据手册看,TX/RX与TX2/RX2占用PD5/PD6,这是唯一可以使用的配置。

另外的TX1/RX1对应的PD0/PD1,8脚MCU是没有PD0的;TX3/RX3对应的PC0/PC1,8脚MCU也没PC0。


所以,如果要用硬件UART,那就只能用1/8脚,只能没有调试功能。这种我一般是现用 TSSOP20 的调完了再转到8脚芯片上去,调试管脚可以延迟一段时间关闭(改为UART使用),以免变砖。


仔细看了下,哪怕是建议WCH官方修改封装,重新安排引脚合封,依然是无法解决在8脚MCU同时拥有UART、I2C与SWIO。


除了我上面建议的先用TSSOP20的调试完成外,还可以考虑使用单线串口占用1#脚。


而且从8脚合封了3个IO(其中包括SWIO)的做法看,应该就是期望保留调试口的优先级是低的。

因为你觉得I2C与UART都常用,可有人却觉得定时器更常用,毕竟众口难调。

除非学Microchip或者Espressif的做法,输入输出是个矩阵,任意引脚都可以可以映射到相应功能模块,否则此事就是无解的。


您好,@maxims,1脚PD6作为UTX_2是无法和5脚PC1作为URX_3搭配使用的,1脚可以和8脚搭配使用。


只有登录才能回复,可以选择微信账号登录