apb uart IP使用说明

背景介绍

通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器,是电脑硬件的一部分。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。

在SOC设计中,UART被用于调试、打印、接收AT命令等。
其帧格式如下:image
空闲位:空闲时数据线为高电平状态,代表无数据传输。

起始位:为了开始数据传输,发送UART发送1位逻辑0(低电平)。当接收UART检测到高电压到低电压转换时,它开始以波特率的频率读取数据帧中的位,开始传输数据。

数据位:可以是5~8位的数据,先发低位,再发高位,一般常见的就是8位(1个字节),其他的如7位的ASCII码。

校验位:奇偶校验,将数据位加上校验位,1的位数为偶数(偶校验),1的位数为奇数(奇校验)。如果奇偶校验位为0(偶校验),则数据帧中的1位应总计为偶数。如果奇偶校验位是1(奇校验),则数据帧中的1位应总计为奇数。

停止位:停止位是数据传输结束的标志,可以是1/1.5/2位的逻辑1(高电平)。

APB是一个低功耗的接口,它设计简单,用来连接一些低带宽的外设。

设计框架

image

整个apb_uart主要包含uart_tx、uart_rx、uart_rf、uart_interrupt模块。

特性描述

▲发送/接收全双工
▲支持任意波特率支持
▲发送/接收均带FIFO
▲支持奇偶校验
▲支持可配置1、2bit STOP-BIT位数
▲支持5、6、7、8bit四种数据长度
▲支持三种中断源

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
全志A33平台调通AP6181 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 wb4916 AT qq.com 完成时间:2017/6/22 20:15 版本:V1.0 1、(可选,在设置中不显示:蓝牙) Z:\home\rediron\a33\ap6181_bb16v3_sina33\android\device\softwinner\astar-y3\overlay\frameworks\base\core\res\res\values\config.xml (直接去掉) <!-- List of regexpressions describing the interface (if any) that represent tetherable bluetooth interfaces. If the device doesn't want to support tethering over bluetooth this should be empty. --> <!-- default: disable Bluetooth PAN feature --> <string-array translatable="false" name="config_tether_bluetooth_regexs"> <item>"bt-pan"</item> </string-array> 2、去掉蓝牙: Z:\home\rediron\a33\ap6181_bb16v3_sina33\android\device\softwinner\astar-y3\astar_y3.mk # wifi features PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.wifi.xml:system/etc/permissions/android.hardware.wifi.xml \ frameworks/native/data/etc/android.hardware.wifi.direct.xml:system/etc/permissions/android.hardware.wifi.direct.xml #frameworks/native/data/etc/android.hardware.bluetooth.xml:system/etc/permissions/android.hardware.bluetooth.xml \ #frameworks/native/data/etc/android.hardware.bluetooth_le.xml:system/etc/permissions/android.hardware.bluetooth_le.xml # ap6181/6210/6330 sdio wifi fw and nvram $(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6181/device-bcm.mk) #$(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6210/device-bcm.mk) #$(call inherit-product-if-exists, hardware/broadcom/wlan/firmware/ap6330/device-bcm.mk) #rtl8723bs bt fw and config #$(call inherit-product, hardware/realtek/bluetooth/rtl8723bs/firmware/rtlbtfw_cfg.mk) #PRODUCT_PACKAGES += Bluetooth #PRODUCT_PROPERTY_OVERRIDES += \ # ro.product.8723b_bt.used=true PRODUCT_PROPERTY_OVERRIDES += \ persist.sys.usb.config=mass_storage,adb \ ro.adb.secure=0 ro.udisk.lable=Polaris \ ro.font.scale=1.0 \ ro.hwa.force=false \ rw.logger=0 \ ro.sys.bootfast=true \ debug.hwc.showfps=0 \ debug.hwui.render_dirty_regions=false #ro.sys.storage_type = emulated \ #for gms #PRODUCT_PROPERTY_OVERRIDES += \ # ro.sys.mutedrm=true \ # ro.adb.secure=1 PRODUCT_PROPERTY_OVERRIDES += \ ro.sf.lcd_density=213 \ ro.product.firmware=v2.0 #include device/softwinner/polaris-common/prebuild/google/products/gms_base.mk 3、关闭rtl8188eu,打开AP6181: Z:\home\rediron\a33\ap6181_bb16v3_sina33\android\device\softwinner\astar-y3\BoardConfig.mk # wifi and bt configuration # 1. Wifi Configuration # 1.1 realtek wifi support # 1.1 realtek wifi configuration #BOARD_WIFI_VENDOR := realtek ifeq ($(BOARD_WIFI_VENDOR), realtek) WPA_SUPPLICANT_VERSION := VER_0_8_X BOARD_WPA_SUPPLICANT_DRIVER := NL80211 BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_rtl BOARD_HOSTAPD_DRIVER := NL80211 BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_rtl SW_BOARD_USR_WIFI := rtl8188eu BOARD_WLAN_DEVICE := rtl8188eu #SW_BOARD_USR_WIFI := rtl8723au #BOARD_WLAN_DEVICE := rtl8723au #SW_BOARD_USR_WIFI := rtl8723bs #BOARD_WLAN_DEVICE := rtl8723bs endif # 1.2 broadcom wifi support BOARD_WIFI_VENDOR := broadcom ifeq ($(BOARD_WIFI_VENDOR), broadcom) BOARD_WPA_SUPPLICANT_DRIVER := NL80211 WPA_SUPPLICANT_VERSION := VER_0_8_X BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_bcmdhd BOARD_HOSTAPD_DRIVER := NL80211 BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_bcmdhd BOARD_WLAN_DEVICE := bcmdhd WIFI_DRIVER_FW_PATH_PARAM := "/sys/module/bcmdhd/parameters/firmware_path" #SW_BOARD_USR_WIFI := AP6181 SW_BOARD_USR_WIFI := AP6210 WIFI_DRIVER_FW_PATH_STA := "/system/vendor/modules/fw_bcm40181a2.bin" WIFI_DRIVER_FW_PATH_P2P := "/system/vendor/modules/fw_bcm40181a2_p2p.bin" WIFI_DRIVER_FW_PATH_AP := "/system/vendor/modules/fw_bcm40181a2_apsta.bin" #SW_BOARD_USR_WIFI := AP6330 #WIFI_DRIVER_FW_PATH_STA := "/system/vendor/modules/fw_bcm40183b2_ag.bin" #WIFI_DRIVER_FW_PATH_P2P := "/system/vendor/modules/fw_bcm40183b2_ag_p2p.bin" #WIFI_DRIVER_FW_PATH_AP := "/system/vendor/modules/fw_bcm40183b2_ag_apsta.bin" endif #1.3 eag wifi config #BOARD_WIFI_VENDOR := eagle ifeq ($(BOARD_WIFI_VENDOR), eagle) WPA_SUPPLICANT_VERSION := VER_0_8_X BOARD_WPA_SUPPLICANT_DRIVER := NL80211 BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_eagle BOARD_HOSTAPD_DRIVER := NL80211 BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_eagle SW_BOARD_USR_WIFI := esp8089 BOARD_WLAN_DEVICE := esp8089 endif # 2. Bluetooth Configuration # make sure BOARD_HAVE_BLUETOOTH is true for every bt vendor #BOARD_HAVE_BLUETOOTH := true #BOARD_HAVE_BLUETOOTH_BCM := true #SW_BOARD_HAVE_BLUETOOTH_NAME := ap6210 #SW_BOARD_HAVE_BLUETOOTH_NAME := ap6330 #BOARD_HAVE_BLUETOOTH_RTK := true #BLUETOOTH_HCI_USE_RTK_H5 := true #SW_BOARD_HAVE_BLUETOOTH_NAME := rtl8723bs 4、关闭BT: Z:\home\rediron\a33\ap6181_bb16v3_sina33\android\device\softwinner\astar-y3\init.sun8i.rc on early-fs mount_all /fstab.sun8i setprop ro.crypto.fuse_sdcard true insmod /system/vendor/modules/disp.ko insmod /system/vendor/modules/lcd.ko insmod /system/vendor/modules/mali.ko insmod /system/vendor/modules/leds-sunxi.ko insmod /system/vendor/modules/bcmdhd.ko ## bluetooth # # UART device # chmod 0660 /dev/ttyS1 # chown bluetooth net_bt_stack /dev/ttyS1 # # # power up/down interface # chmod 0660 /sys/class/rfkill/rfkill0/state # chmod 0660 /sys/class/rfkill/rfkill0/type # chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/state # chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/type # write /sys/class/rfkill/rfkill0/state 0 # # # bluetooth LPM # chmod 0220 /proc/bluetooth/sleep/lpm # chmod 0220 /proc/bluetooth/sleep/btwrite # chown bluetooth net_bt_stack /proc/bluetooth/sleep/lpm # chown bluetooth net_bt_stack /proc/bluetooth/sleep/btwrite # write /proc/bluetooth/sleep/lpm 1 #2G or 3G init.rc # import init.sunxi.3gdongle.rc ## 1. realtek & eagle wifi service ## 1.1 realtek & eagle wifi sta service #service wpa_supplicant /system/bin/wpa_supplicant \ # -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ # -O/data/misc/wifi/sockets \ # -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0 # # we will start as root and wpa_supplicant will switch to user wifi # # after setting up the capabilities required for WEXT # # user wifi # # group wifi inet keystore # class main # socket wpa_wlan0 dgram 660 wifi wifi # disabled # oneshot # ## 1.2 realtek & eagle wifi sta p2p concurrent service #service p2p_supplicant /system/bin/wpa_supplicant \ # -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \ # -e/data/misc/wifi/entropy.bin -N \ # -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ # -O/data/misc/wifi/sockets \ # -g@android:wpa_wlan0 # class main # socket wpa_wlan0 dgram 660 wifi wifi # disabled # oneshot # 2. broadcom wifi service # 2.1 broadcom wifi station and softap service wpa_supplicant /system/bin/wpa_supplicant \ -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ -I/system/etc/wifi/wpa_supplicant_overlay.conf \ -O/data/misc/wifi/sockets \ -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0 # we will start as root and wpa_supplicant will switch to user wifi # after setting up the capabilities required for WEXT # user wifi # group wifi inet keystore class main socket wpa_wlan0 dgram 660 wifi wifi disabled oneshot # 2.2 broadcom wifi sta p2p concurrent service service p2p_supplicant /system/bin/wpa_supplicant \ -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \ -I/system/etc/wifi/wpa_supplicant_overlay.conf \ -O/data/misc/wifi/sockets -N \ -ip2p0 -Dnl80211 -c/data/misc/wifi/p2p_supplicant.conf \ -I/system/etc/wifi/p2p_supplicant_overlay.conf \ -puse_p2p_group_interface=1 -e/data/misc/wifi/entropy.bin \ -g@android:wpa_wlan0 # we will start as root and wpa_supplicant will switch to user wifi # after setting up the capabilities required for WEXT # user wifi # group wifi inet keystore class main socket wpa_wlan0 dgram 660 wifi wifi disabled oneshot 5、(可选配置:) Z:\home\rediron\a33\ap6181_bb16v3_sina33\android\frameworks\base\packages\SettingsProvider\res\values\defaults.xml <integer name="def_screen_off_timeout">1800000</integer> <bool name="def_lockscreen_disabled">true</bool> 6、(可选配置:) Z:\home\rediron\a33\ap6181_bb16v3_sina33\lichee\tools\pack\chips\sun8iw5p1\configs\default\env.cfg bootdelay=3 loglevel=8 7、修改配置文件: Z:\home\rediron\a33\ap6181_bb16v3_sina33\lichee\tools\pack\chips\sun8iw5p1\configs\y3\sys_config.fex aldo1_vol = 3300 aldo2_vol = 2500 aldo3_vol = 3000 dldo1_vol = 3300 dldo2_vol = 3300 dldo3_vol = 2800 ;gpio0_vol = 2800 ldoio0_vol = 2800 [card2_boot_para] card_ctrl = 2 card_high_speed = 1 card_line = 8 sdc_2xmode = 1 sdc_ddrmode = 1 sdc_clk = port:PC05<3><1><2><default> sdc_cmd = port:PC06<3><1><2><default> sdc_d0 = port:PC08<3><1><2><default> sdc_d1 = port:PC09<3><1><2><default> sdc_d2 = port:PC10<3><1><2><default> sdc_d3 = port:PC11<3><1><2><default> sdc_d4 = port:PC12<3><1><2><default> sdc_d5 = port:PC13<3><1><2><default> sdc_d6 = port:PC14<3><1><2><default> sdc_d7 = port:PC15<3><1><2><default> [wakeup_src_para] cpu_en = 0 cpu_freq = 48 ; (cpu:apb:ahb) pll_ratio = 0x111 dram_selfresh_en= 1 dram_freq = 36 wakeup_src_wl = port:PL07<4><default><default><0> ;wakeup_src_bt = port:PL09<4><default><default><0> ;bb_wake_ap = port:PL02<4><default><default><0> ;---------------------------------------------------------------------------------- ;uart configuration ;uart_used = uart x enable ;uart_type = 2:2 wire,4:4 wire,8:8 wire, full function ;---------------------------------------------------------------------------------- [uart0] uart_used = 1 uart_port = 0 uart_type = 2 uart_tx = port:PF02<3><1><default><default> uart_rx = port:PF04<3><1><default><default> ;-------------------------------------------------------------------------------- ;wifi configuration ;wifi_sdc_id: 0- SDC0, 1- SDC1, 2- SDC2, 3- SDC3 ;wifi_usbc_id: 0- USB0, 1- USB1, 2- USB2 ;wifi_usbc_type: 1- EHCI(speed 2.0), 2- OHCI(speed 1.0) ;wifi_mod_sel: 0- none, 1- ap6181, 2- ap6210(wifi+bt), ; 3 - rtl8188eu, 4- rtl8723au(wifi+bt), ; 5 - rtl8723bs, 6- esp8089 ;-------------------------------------------------------------------------------- [wifi_para] wifi_used = 1 wifi_sdc_id = 1 wifi_usbc_id = 1 wifi_usbc_type = 1 wifi_mod_sel = 1 wifi_power = "axp22_aldo1" wifi_power_ext1 = "" wifi_power_ext2 = "" wifi_power_switch = ;wifi_power_switch = port:power0<1><0><default><0> ; 1 - ap6181 sdio wifi gpio config ap6xxx_wl_regon = port:PL06<1><default><default><0> ap6xxx_wl_host_wake = port:PL07<4><default><default><0> ap6xxx_lpo_use_apclk = 1 ; 2 - ap6210 sdio wifi gpio config ;ap6xxx_wl_regon = port:PL06<1><default><default><0> ;ap6xxx_wl_host_wake = port:PL07<4><default><default><0> ;ap6xxx_bt_regon = port:PL08<1><default><default><0> ;ap6xxx_bt_wake = port:PL10<1><default><default><0> ;ap6xxx_bt_host_wake = port:PL09<4><default><default><0> ;ap6xxx_lpo_use_apclk = 1 [bt_para] bt_used = 0 bt_uart_id = 1
### 回答1: UART是通用异步收发器的缩写,它提供了一种点对点的数据传输方式,常用于串口通信。 dw_apb_uart是一种UART驱动,它是基于ARM公司的AMBA总线协议的一种外设控制器。 dw_apb_uart利用DMA和FIFO等技术,可以提供高效的数据传输功能,能够快速传输大量数据。它还支持多种数据格式,包括8位、9位、10位以及可变的数据位数。此外,dw_apb_uart还可以实现多种调制解调器控制和通信协议,如RS-232、RS-422和RS-485等。 作为一种高性能的外设控制器,dw_apb_uart还具有可扩展性和灵活性。它可以通过配置和编程实现各种不同的应用场景,如数据采集、通信设备、自动化控制等。 总的来说,dw_apb_uart作为UART驱动,具有高效、灵活、可扩展等优良特性,是一种非常实用的外设控制器。 ### 回答2: UART是一种通用的串行通信协议,被广泛用于多种应用中,比如通信、调试和控制等。DW_APB_UART是一种UART驱动,是DesignWare家族产品的一部分。它支持UART的基本功能和高级功能,包括9位数据位、校验和多种波特率。DW_APB_UART具有高灵活性和可靠性,可以与多种IP核和SoC平台兼容,降低了设计复杂度和成本。 DW_APB_UART驱动程序基于ARM的APB总线(Advanced Peripheral Bus)协议,通过在SoC内部集成APB总线控制器来实现与CPU的通信。APB协议是一种低带宽、低功耗的总线协议,具有流水线式的传输结构。DW_APB_UART驱动程序通过APB协议与CPU进行通信,实现UART功能的协议管理和数据传输。此外,DW_APB_UART驱动程序还支持中断和DMA传输机制,提高了数据传输效率和系统可靠性。 DW_APB_UART驱动程序可以通过多种编程语言来实现,比如C语言、汇编语言等。DW_APB_UART还提供了一组应用编程接口(API),可以帮助开发人员简化开发工作。DW_APB_UART驱动程序的开发需要掌握APB协议、UART协议以及系统级编程等技能,需要对硬件电路和软件驱动等领域有一定的了解。 总之,DW_APB_UART驱动程序是一种高可靠性、高灵活性的UART驱动,具有广泛的应用前景。它可以帮助开发人员实现UART通信功能,降低开发成本和时间。 ### 回答3: DW_APB_UART是一款优秀的UART控制器驱动,它可以和处理器内部的APB总线进行通信,支持多种工作模式,并提供了灵活的数据传输接口,可广泛应用于各种串行通信应用场景中。 在DW_APB_UART驱动中,主要包括数据收集、数据传输和中断处理三个部分。在数据收集方面,驱动会从物理层获取接收到的串行数据,并进行缓存处理,以确保数据不会丢失;在数据传输方面,驱动支持多种常见的通信协议,如UART、IrDA和Modem等协议,并可以根据需要灵活配置相应的参数;在中断处理方面,驱动支持FIFO溢出、接收错误、传输完成等多种中断类型,并根据中断类型进行相应的处理操作。 除此之外,DW_APB_UART驱动还具有很高的可配置性和可扩展性,部分功能如FIFO深度、波特率、校验位和停止位等参数均可通过寄存器进行配置,使得驱动可以应对不同的应用场景和外设需求。 总的来说,DW_APB_UART驱动通过简单的接口和灵活的配置参数,提供了一种高效、可靠、灵活的串行通信解决方案,并成为许多嵌入式系统中必不可少的一部分。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轻量IP核

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值