194|0

47

帖子

0

TA的资源

一粒金砂(高级)

[嘉楠 CanMV K230]测评 ④UART [复制链接]

本帖最后由 不爱胡萝卜的仓鼠 于 2024-10-3 15:17 编辑

        串口是开发板与外界通讯的很重要的一个外设,日志输出、与其他设备通讯交互都会用到,因此在点灯之后,我们就来看看串口的使用

 

一.K230 UART资源介绍及开发板串口引出情况

        根据官网的框图和datasheet介绍可以得知,K230有5个串口

1.png
  • UART

    • Support 5 UART interface

    • 9-bit serial data support

    • False start bit detection

    • Programmable fractional baud rate support

    • APB data bus widths of 32

    • Additional DMA interface signals for compatibility with DMA interface, DMA interface signal active low

    • Transmit and receive FIFO depths of 32, Supports 32x32-bit transmit first-in, first-out (FIFO) and 32x32-bit RX FIFO, Internal FIFO (RAM)

    • Busy functionality

    • Functionality based on the 16550 industry standard

      • Programmable character properties, such as:

        • Number of data bits per character (5-8)

        • Optional parity bit (with odd, even select or Stick Parity)

        • Number of stop bits (1, 1.5 or 2)

      • Line break generation and detection

      • DMA signaling with two programmable modes

      • Prioritized interrupt identification

    • Programmable FIFO enable/disable

    • Separate system resets for each clock domain to prevent metastability

        其中UART0被小核sh占用,UART3被大核sh占用。留给用户的为UART1,UART2,UART4

        这5个串口对应的引脚如下

2.png

       

        接下来我们看看开发板关于串口引出了哪些,开发板正面把串口0、1、3引出了,如下图所示

3.png

        背面把串口2引出了

4.png

        还有串口4没有被引出,串口4对应的引脚是48、49。我看了一下开发板的原理图,这两个引脚被0号摄像头占用了

5.png

 

6.png

二.日志输出

        串口一个很重要的功能就是日志输出,在K230调试过程中如果我输出日志怎么办?需要特别为了串口占用一个串口硬件吗?会不会有点浪费。设计师已经考虑到这个问题了,还记得在第一篇文章中提到的,开发板插上电脑就会出现一个盘符还有一个串口。对喽,这个串口就是一个虚拟串口,我们就可以通过它输出日志了。

        使用这个虚拟串口输出日志也非常简单只需要使用printf函数即可,测试代码如下

#输出文本
print("test")

#输出变量
name = "01Studio CanMV K230"
print(f"开发板名称: {name}")
year = 2024
month = 9
day = 30
print(f"日期: {year}-{month}-{day}")

        在IDE中就有这个虚拟串口的输出框,我们可以直接使用。结果如下

7.png

 

三.串口收发

        串口还有一个作用就是和其他开发板或者上位机通讯,这里我们就来实现一下串口数据的收发。我直接使用背面的串口2,与CH340接线如下

8.JPG

 

        这里我非常想吐槽一下,这个附赠的线的线序太坑爹了,红黑线的线序是反的,如果接线前不看线序,按照默认规则把黑色接到GND上就短路了!(拍完照片后,我就把线序调整了,后续如果有这根线的照片,那就是已经调整过线序的了)

 

        嘉楠官方关于UART的文档:https://developer.canaan-creative.com/k230_canmv/main/zh/api/machine/K230_CanMV_UART%E6%A8%A1%E5%9D%97API%E6%89%8B%E5%86%8C.html

 

        我们参考这个文档写一个测试代码。先测试串口数据的发送,然后一直接收数据,把收到的数据从日志串口和串口2发出去。代码如下

        这里需要注意一定要在开发板通电后调用一次fpioa.set_function函数,把引脚功能配置为串口,否则串口功能是不会生效的

from machine import UART
from machine import FPIOA
import time

fpioa = FPIOA()

#初始化串口2
fpioa.set_function(11,FPIOA.UART2_TXD)
fpioa.set_function(12,FPIOA.UART2_RXD)
my_uart = UART(UART.UART2, baudrate=115200, bits=UART.EIGHTBITS, parity=UART.PARITY_NONE, stop=UART.STOPBITS_ONE)

#发送数据测试
my_uart.write('UART2 send test\r\n')

#一直接收数据
while True:
    #读取一行,并以一个换行符结束。
    recv_data = my_uart.readline()
    #如果有读到数据
    if recv_data != b'':
        #把收到数据通过日志串口打印出来
        print(recv_data)
        #把收到的数据原样从串口2发出去
        my_uart.write(recv_data)
    time.sleep(0.1)

        结果如下

9.png

 

 

 

 

 


回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
[分享下载]C语言编程900例及C语言视频教学BT种子(谭浩强)

对于C语言的初学者,这些是很有用的东东,要用的下载吧,免费分享哦 C程序设计 谭浩强 清华大学出版社 第一讲 第一章 C语言 ...

【教你一招】做好采购的N种技巧和途径

最近网站上有很多朋友问"如何去采购,怎样才能做好采购",希望我的这篇文章会对大家有所帮助! 采购分为很多类,最直接的两大类就 ...

移植Linux内核至DSP平台方案研究

移植Linux内核至DSP平台方案研究

EK_LM3S811学习资料集锦

不可否认的是,David_Lee是个善于规整的家伙,所以本次资料集锦,就以给网友的一个回复开头了: 如果你是个初学者,不妨先仔 ...

Altium designer 圆弧形阵列粘贴和极坐标的使用

是这样的,今天下午(6/11)有个朋友问到我一个圆弧形阵列粘贴的问题,提出了如下图所示的要求, 所以我在想可能做LED行业和其 ...

分享经验 [RK3399] Type-C改为普通USB

CPU:RK3399 系统:Android 7.1.2 为了降低成本,主板将 Type-C 改为 MicroUSB 接口,节省了 fusb302芯片 参考 Roc ...

涂鸦智能模组SDK开发系列课程——5.对模组二次开发

本章节旨在通过一个简单Demo,使开发者能够了解涂鸦SDK的启动流程,带领开发者基于涂鸦提供的SDK对模组进行二次开发。 Demo功 ...

谁有使用allegro画pcb的教程视频?能分享下吗?

最近想学习下用allegro画多层板,谁有合适的4层 6层 8层 板的视频,能不能分享下? 实在没有只能去报培训班了

【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A+GPIO口的使用(补充)

接下来略微介绍一下如何使用LicheePi 4A驱动电机吧。 在LicheePi 4A上开放了4个GPIO(上一篇已经介绍了如何使用python进行控 ...

《深度强化学习实战》读书笔记2

最近抽时间把第三章和第四章看完了,可以说这两章算是进入本书的正题了。正如本书第二页说的那样,本书适用于有深度学习基础的读 ...

关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表