您的位置:首页 > 游戏 > 手游 > 开发者选项在哪里打开vivo_怎么自己做一个链接_做抖音seo排名软件是否合法_网页制作基础教程

开发者选项在哪里打开vivo_怎么自己做一个链接_做抖音seo排名软件是否合法_网页制作基础教程

2024/12/23 2:30:08 来源:https://blog.csdn.net/m0_46577050/article/details/144094053  浏览:    关键词:开发者选项在哪里打开vivo_怎么自己做一个链接_做抖音seo排名软件是否合法_网页制作基础教程
开发者选项在哪里打开vivo_怎么自己做一个链接_做抖音seo排名软件是否合法_网页制作基础教程

瑞芯微RK3568驱动配置之十串口

  • Chaptet1 瑞芯微RK3568驱动配置之十串口
  • Chapter2 创龙瑞芯微RK3568设备树1(修改设备树GPIO和串口)
    • 前言
    • 基础
    • 题外话
    • 内容
      • 1.GPIO
      • 2.串口
    • 不同
    • 总结
    • 后续
  • Chapter3 QT串口大量数据动态实时显示(三)========“customplot绘图步骤”
    • 前言
    • 第一部分: 串口接收大量数据动态显示的难点
      • 串口大量数据QT接收时问题的原因:
      • 选择customplot绘图的原因:
  • Chapter4 创龙瑞芯微RK3568参数修改(调试口波特率和rootfs文件,串口波特率默认:1500000bps,建议修改为115200bps)
    • 前言
    • 给定波特率


Chaptet1 瑞芯微RK3568驱动配置之十串口

原文链接:https://blog.csdn.net/huntenganwei/article/details/127086202

基于飞凌的开发板设计,这里需要使用到RK3568的串口,开发板只开放了UART2、UART3、UART4、UART5、UART8。查看文档,准备配置UART0、UART6、UART7、UART9。一共9个串口使用。剩下的一个串口被网口1占用,暂时不修改。

修改设备树DTS文件配置。

地址:

/home/forlinx/3568/OK3568-linux-source/kernel/arch/arm64/boot/dts/rockchip

rk3568.dtsi为基本配置文件,只需要修改OK3568-C-common.dtsi。

占用了LVDS的管脚,LVDS无法使用。

/dts-v1/;#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/pwm/pwm.h>
#include <dt-bindings/input/rk-input.h>
#include <dt-bindings/display/drm_mipi_dsi.h>
#include <dt-bindings/display/rockchip_vop.h>
#include <dt-bindings/display/media-bus-format.h>
#include "rk3568.dtsi"/ {model = "Forlinx OK3568-C Board";compatible = "forlinx,ok3568", "rockchip,rk3568-evb1-ddr4-v10", "rockchip,rk3568";
//only hdmiforlinx_control {status = "okay";video-hdmi = "hdmi";video-mipi-edp = "off";video-lvds = "off";};edp-panel {compatible = "simple-panel";prepare-delay-ms = <120>;enable-delay-ms = <120>;unprepare-delay-ms = <120>;disable-delay-ms = <120>;backlight = <&edp_backlight>;enable-gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>;port {panel_in_edp: endpoint {remote-endpoint = <&edp_out_panel>;};};};panel {compatible = "simple-panel";backlight = <&lvds_backlight>;power-supply = <&vcc3v3_lcd2_n>;enable-delay-ms = <20>;prepare-delay-ms = <20>;unprepare-delay-ms = <20>;disable-delay-ms = <20>;bus-format = <MEDIA_BUS_FMT_RGB888_1X7X4_SPWG>;width-mm = <152>;height-mm = <91>;display-timings {native-mode = <&timing0>;timing0: timing0 {clock-frequency = <71000000>;hactive = <1280>;vactive = <800>;hback-porch = <10>;hfront-porch = <140>;vback-porch = <1>;vfront-porch = <2>;hsync-len = <10>;vsync-len = <20>;hsync-active = <0>;vsync-active = <1>;de-active = <1>;pixelclk-active = <0>;};};ports {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;dual-lvds-even-pixels;panel_in_lvds: endpoint {remote-endpoint = <&lvds_out_panel>;};};};};adc_keys: adc-keys {compatible = "adc-keys";io-channels = <&saradc 0>;io-channel-names = "buttons";keyup-threshold-microvolt = <1800000>;poll-interval = <100>;vol-up-key {label = "volume up";linux,code = <KEY_VOLUMEUP>;press-threshold-microvolt = <1750>;};vol-down-key {label = "volume down";linux,code = <KEY_VOLUMEDOWN>;press-threshold-microvolt = <297500>;};menu-key {label = "menu";linux,code = <KEY_MENU>;press-threshold-microvolt = <980000>;};back-key {label = "back";linux,code = <KEY_BACK>;press-threshold-microvolt = <1305500>;};};leds: leds {compatible = "gpio-leds";work_led: work {gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;linux,default-trigger = "heartbeat";};};hdmi_sound: hdmi-sound {status = "okay";compatible = "rockchip,hdmi";rockchip,mclk-fs = <128>;rockchip,card-name = "rockchip,hdmi";rockchip,cpu = <&i2s0_8ch>;rockchip,codec = <&hdmi>;rockchip,jack-det;};pdmics: dummy-codec {status = "disabled";compatible = "rockchip,dummy-codec";#sound-dai-cells = <0>;};pdm_mic_array: pdm-mic-array {status = "disabled";compatible = "simple-audio-card";simple-audio-card,name = "rockchip,pdm-mic-array";simple-audio-card,cpu {sound-dai = <&pdm>;};simple-audio-card,codec {sound-dai = <&pdmics>;};};audiopwmout_diff: audiopwmout-diff {status = "disabled";compatible = "simple-audio-card";simple-audio-card,format = "i2s";simple-audio-card,name = "rockchip,audiopwmout-diff";simple-audio-card,mclk-fs = <256>;simple-audio-card,bitclock-master = <&master>;simple-audio-card,frame-master = <&master>;simple-audio-card,cpu {sound-dai = <&i2s3_2ch>;};master: simple-audio-card,codec {sound-dai = <&dig_acodec>;};};rk809_sound: rk809-sound {status = "okay";compatible = "simple-audio-card";simple-audio-card,format = "i2s";simple-audio-card,name = "rockchip,rk809-codec";simple-audio-card,hp-det-gpio = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>;simple-audio-card,widgets = "Headphones", "Headphones Jack";simple-audio-card,mclk-fs = <256>;simple-audio-card,cpu {sound-dai = <&i2s1_8ch>;};simple-audio-card,codec {sound-dai = <&rk809_codec>;};};spdif-sound {status = "disabled";compatible = "simple-audio-card";simple-audio-card,name = "ROCKCHIP,SPDIF";simple-audio-card,cpu {sound-dai = <&spdif_8ch>;};simple-audio-card,codec {sound-dai = <&spdif_out>;};};spdif_out: spdif-out {status = "disabled";compatible = "linux,spdif-dit";#sound-dai-cells = <0>;};vcc12v: vcc-12v {compatible = "regulator-fixed";regulator-name = "vcc12v";regulator-always-on;regulator-boot-on;regulator-min-microvolt = <12000000>;regulator-max-microvolt = <12000000>;};vcc5v0_sys: vcc5v0-sys {compatible = "regulator-fixed";regulator-name = "vcc5v0_sys";regulator-always-on;regulator-boot-on;regulator-min-microvolt = <5000000>;regulator-max-microvolt = <5000000>;vin-supply = <&vcc12v>;};vcc3v3_sys: vcc3v3-sys {compatible = "regulator-fixed";regulator-name = "vcc3v3_sys";regulator-always-on;regulator-boot-on;regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;vin-supply = <&vcc5v0_sys>;};//for main boardvcc3v3: vcc-3v3 {compatible = "regulator-fixed";regulator-name = "vcc3v3";regulator-always-on;regulator-boot-on;regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;vin-supply = <&vcc5v0_sys>;};vcc1v8: vcc-1v8 {compatible = "regulator-fixed";regulator-name = "vcc1v8";regulator-always-on;regulator-boot-on;regulator-min-microvolt = <1800000>;regulator-max-microvolt = <1800000>;vin-supply = <&vcc3v3>;};vcc1v2: vcc-1v2 {compatible = "regulator-fixed";regulator-name = "vcc1v2";regulator-always-on;regulator-boot-on;regulator-min-microvolt = <1200000>;regulator-max-microvolt = <1200000>;vin-supply = <&vcc3v3>;};vcc2v8: vcc-2v8 {compatible = "regulator-fixed";regulator-name = "vcc2v8";regulator-always-on;regulator-boot-on;regulator-min-microvolt = <2800000>;regulator-max-microvolt = <2800000>;vin-supply = <&vcc3v3>;};vcc3v3_lcd2_n: vcc3v3-lcd2-n {compatible = "regulator-fixed";regulator-name = "vcc3v3_lcd2_n";regulator-boot-on;regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;enable-active-high;gpio = <&gpio3 RK_PC5 GPIO_ACTIVE_HIGH>;vin-supply = <&vcc3v3_sys>;regulator-state-mem {regulator-off-in-suspend;};};sdio_pwrseq: sdio-pwrseq {compatible = "mmc-pwrseq-simple";clocks = <&rk809 1>;clock-names = "ext_clock";pinctrl-names = "default";pinctrl-0 = <&wifi_enable_h>;/** On the module itself this is one of these (depending* on the actual card populated):* - SDIO_RESET_L_WL_REG_ON* - PDN (power down when low)*/post-power-on-delay-ms = <200>;reset-gpios = <&gpio3 RK_PD4 GPIO_ACTIVE_LOW>;};vcc2v5_sys: vcc2v5-ddr {compatible = "regulator-fixed";regulator-name = "vcc2v5-sys";regulator-always-on;regulator-boot-on;regulator-min-microvolt = <2500000>;regulator-max-microvolt = <2500000>;vin-supply = <&vcc3v3_sys>;};5g-rst {compatible = "regulator-fixed";regulator-name = "5g-rst";regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;gpio = <&gpio1 RK_PB2 GPIO_ACTIVE_LOW>;enable-active-low;regulator-boot-on;regulator-always-on;pinctrl-names = "default";pinctrl-0 = <&net_5g_rst_gpio>;status = "okay";};5g-pwr {compatible = "regulator-fixed";regulator-name = "5g-pwr";regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;gpio = <&gpio1 RK_PB1 GPIO_ACTIVE_HIGH>;enable-active-high;regulator-boot-on;regulator-always-on;pinctrl-names = "default";pinctrl-0 = <&net_5g_pwr_gpio>;status = "okay";};fiq-debugger {compatible = "rockchip,fiq-debugger";rockchip,serial-id = <2>;rockchip,wake-irq = <0>;/* If enable uart uses irq instead of fiq */rockchip,irq-mode-enable = <1>;rockchip,baudrate = <115200>;  /* Only 115200 and 1500000 */interrupts = <GIC_SPI 252 IRQ_TYPE_LEVEL_LOW>;pinctrl-names = "default";pinctrl-0 = <&uart2m0_xfer>;status = "okay";};debug: debug@fd904000 {compatible = "rockchip,debug";reg = <0x0 0xfd904000 0x0 0x1000>,<0x0 0xfd905000 0x0 0x1000>,<0x0 0xfd906000 0x0 0x1000>,<0x0 0xfd907000 0x0 0x1000>;};cspmu: cspmu@fd90c000 {compatible = "rockchip,cspmu";reg = <0x0 0xfd90c000 0x0 0x1000>,<0x0 0xfd90d000 0x0 0x1000>,<0x0 0xfd90e000 0x0 0x1000>,<0x0 0xfd90f000 0x0 0x1000>;};test-power {status = "okay";};rk_headset: rk-headset {status = "disabled";compatible = "rockchip_headset";headset_gpio = <&gpio4 RK_PD2 GPIO_ACTIVE_LOW>;pinctrl-names = "default";pinctrl-0 = <&hp_det>;io-channels = <&saradc 2>;};dsi1_backlight: dsi1-backlight {compatible = "pwm-backlight";pwms = <&pwm5 0 20000 0>;brightness-levels = <0  20  20  21  21  22  22  2323  24  24  25  25  26  26  2727  28  28  29  29  30  30  3131  32  32  33  33  34  34  3535  36  36  37  37  38  38  3940  41  42  43  44  45  46  4748  49  50  51  52  53  54  5556  57  58  59  60  61  62  6364  65  66  67  68  69  70  7172  73  74  75  76  77  78  7980  81  82  83  84  85  86  8788  89  90  91  92  93  94  9596  97  98  99 100 101 102 103104 105 106 107 108 109 110 111112 113 114 115 116 117 118 119120 121 122 123 124 125 126 127128 129 130 131 132 133 134 135136 137 138 139 140 141 142 143144 145 146 147 148 149 150 151152 153 154 155 156 157 158 159160 161 162 163 164 165 166 167168 169 170 171 172 173 174 175176 177 178 179 180 181 182 183184 185 186 187 188 189 190 191192 193 194 195 196 197 198 199200 201 202 203 204 205 206 207208 209 210 211 212 213 214 215216 217 218 219 220 221 222 223224 225 226 227 228 229 230 231232 233 234 235 236 237 238 239240 241 242 243 244 245 246 247248 249 250 251 252 253 254 255>;default-brightness-level = <200>;is-forlinx;};lvds_backlight: lvds-backlight {compatible = "pwm-backlight";pwms = <&pwm14 0 20000 0>;brightness-levels = <0  20  20  21  21  22  22  2323  24  24  25  25  26  26  2727  28  28  29  29  30  30  3131  32  32  33  33  34  34  3535  36  36  37  37  38  38  3940  41  42  43  44  45  46  4748  49  50  51  52  53  54  5556  57  58  59  60  61  62  6364  65  66  67  68  69  70  7172  73  74  75  76  77  78  7980  81  82  83  84  85  86  8788  89  90  91  92  93  94  9596  97  98  99 100 101 102 103104 105 106 107 108 109 110 111112 113 114 115 116 117 118 119120 121 122 123 124 125 126 127128 129 130 131 132 133 134 135136 137 138 139 140 141 142 143144 145 146 147 148 149 150 151152 153 154 155 156 157 158 159160 161 162 163 164 165 166 167168 169 170 171 172 173 174 175176 177 178 179 180 181 182 183184 185 186 187 188 189 190 191192 193 194 195 196 197 198 199200 201 202 203 204 205 206 207208 209 210 211 212 213 214 215216 217 218 219 220 221 222 223224 225 226 227 228 229 230 231232 233 234 235 236 237 238 239240 241 242 243 244 245 246 247248 249 250 251 252 253 254 255>;default-brightness-level = <200>;is-forlinx;};edp_backlight: edp-backlight {compatible = "pwm-backlight";pwms = <&pwm3 0 20000 0>;brightness-levels = <0  20  20  21  21  22  22  2323  24  24  25  25  26  26  2727  28  28  29  29  30  30  3131  32  32  33  33  34  34  3535  36  36  37  37  38  38  3940  41  42  43  44  45  46  4748  49  50  51  52  53  54  5556  57  58  59  60  61  62  6364  65  66  67  68  69  70  7172  73  74  75  76  77  78  7980  81  82  83  84  85  86  8788  89  90  91  92  93  94  9596  97  98  99 100 101 102 103104 105 106 107 108 109 110 111112 113 114 115 116 117 118 119120 121 122 123 124 125 126 127128 129 130 131 132 133 134 135136 137 138 139 140 141 142 143144 145 146 147 148 149 150 151152 153 154 155 156 157 158 159160 161 162 163 164 165 166 167168 169 170 171 172 173 174 175176 177 178 179 180 181 182 183184 185 186 187 188 189 190 191192 193 194 195 196 197 198 199200 201 202 203 204 205 206 207208 209 210 211 212 213 214 215216 217 218 219 220 221 222 223224 225 226 227 228 229 230 231232 233 234 235 236 237 238 239240 241 242 243 244 245 246 247248 249 250 251 252 253 254 255>;default-brightness-level = <200>;};
};&reserved_memory {ramoops: ramoops@110000 {compatible = "ramoops";reg = <0x0 0x110000 0x0 0xf0000>;record-size = <0x20000>;console-size = <0x80000>;ftrace-size = <0x00000>;pmsg-size = <0x50000>;};
};&rng {status = "okay";
};&rockchip_suspend {status = "okay";
};&combphy0_us {status = "okay";
};&combphy1_usq {status = "okay";
};&combphy2_psq {status = "okay";
};&csi2_dphy_hw {status = "okay";
};&csi2_dphy0 {status = "okay";ports {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;#address-cells = <1>;#size-cells = <0>;mipi_in_ov13850: endpoint@1 {reg = <1>;remote-endpoint = <&ov13850_out>;data-lanes = <1 2>;};};port@1 {reg = <1>;#address-cells = <1>;#size-cells = <0>;csidphy_out: endpoint@0 {reg = <0>;remote-endpoint = <&isp0_in>;};};};
};&gmac0 {phy-mode = "rgmii";clock_in_out = "output";snps,reset-gpio = <&gpio3 RK_PA4 GPIO_ACTIVE_LOW>;snps,reset-active-low;/* Reset time is 20ms, 100ms for rtl8211f */snps,reset-delays-us = <0 20000 100000>;assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>, <&cru CLK_MAC0_OUT>;assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>;assigned-clock-rates = <0>, <125000000>, <25000000>;pinctrl-names = "default";pinctrl-0 = <&gmac0_miim&gmac0_tx_bus2&gmac0_rx_bus2&gmac0_rgmii_clk&gmac0_rgmii_bus&eth0_pins>;tx_delay = <0x2f>;rx_delay = <0x00>;phy-handle = <&rgmii_phy0>;status = "okay";
};&gmac1 {phy-mode = "rgmii";clock_in_out = "output";snps,reset-gpio = <&gpio3 RK_PA2 GPIO_ACTIVE_LOW>;snps,reset-active-low;/* Reset time is 20ms, 100ms for rtl8211f */snps,reset-delays-us = <0 20000 100000>;assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>, <&cru CLK_MAC1_OUT>;assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>;assigned-clock-rates = <0>, <125000000>, <25000000>;pinctrl-names = "default";pinctrl-0 = <&gmac1m1_miim&gmac1m1_tx_bus2&gmac1m1_rx_bus2&gmac1m1_rgmii_clk&gmac1m1_rgmii_bus&eth1m1_pins>;tx_delay = <0x35>;rx_delay = <0x00>;phy-handle = <&rgmii_phy1>;status = "okay";
};&mdio0 {rgmii_phy0: phy@0 {compatible = "ethernet-phy-ieee802.3-c22";reg = <0x0>;clocks = <&cru CLK_MAC0_OUT>;};
};&mdio1 {rgmii_phy1: phy@0 {compatible = "ethernet-phy-ieee802.3-c22";reg = <0x0>;clocks = <&cru CLK_MAC1_OUT>;};
};&video_phy0 {status = "disabled";
};&video_phy1 {status = "disabled";
};/*
&pcie30phy {status = "okay";
};&pcie3x2 {reset-gpios = <&gpio0 RK_PC6 GPIO_ACTIVE_HIGH>;enable-gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;vpcie3v3-supply = <&vcc3v3_sys>;status = "okay";
};&pcie2x1 {reset-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>;vpcie3v3-supply = <&vcc3v3_sys>;status = "okay";
};
*/
&pinctrl {touch {touch_gpio: touch-gpio {rockchip,pins =<1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>,<1 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;};ft5x06_int: ft5x06-int {rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>,<0 RK_PC0 RK_FUNC_GPIO &pcfg_pull_up>;};dsi_gt911_int: dsi-gt911-int {rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>,<0 RK_PC0 RK_FUNC_GPIO &pcfg_pull_up>;};};cam {camera_pwr: camera-pwr {rockchip,pins =/* camera power en */<0 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;};ov13850_default_pin: ov13850-default-pin {rockchip,pins =<4 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>,<0 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;};ov13850_sleep_pin: ov13850-sleep-pin {rockchip,pins =<4 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>,<0 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;};};headphone {hp_det: hp-det {rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;};};pmic {pmic_int: pmic_int {rockchip,pins =<0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;};soc_slppin_gpio: soc_slppin_gpio {rockchip,pins =<0 RK_PA2 RK_FUNC_GPIO &pcfg_output_low_pull_down>;};soc_slppin_slp: soc_slppin_slp {rockchip,pins =<0 RK_PA2 1 &pcfg_pull_up>;};soc_slppin_rst: soc_slppin_rst {rockchip,pins =<0 RK_PA2 2 &pcfg_pull_none>;};};sdio-pwrseq {wifi_enable_h: wifi-enable-h {rockchip,pins = <3 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;};};5g {net_5g_rst_gpio: net_5g_rst_gpio {rockchip,pins = <1 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;			 };net_5g_pwr_gpio: net_5g_pwr_gpio {rockchip,pins = <1 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;			 };};
};&rkisp {status = "okay";
};&rkisp_mmu {status = "okay";
};&rkisp_vir0 {status = "okay";port {#address-cells = <1>;#size-cells = <0>;isp0_in: endpoint@0 {reg = <0>;remote-endpoint = <&csidphy_out>;};};
};&sdmmc2 {max-frequency = <150000000>;supports-sdio;bus-width = <4>;disable-wp;cap-sd-highspeed;cap-sdio-irq;keep-power-in-suspend;mmc-pwrseq = <&sdio_pwrseq>;non-removable;pinctrl-names = "default";pinctrl-0 = <&sdmmc2m0_bus4 &sdmmc2m0_cmd &sdmmc2m0_clk>;sd-uhs-sdr104;status = "okay";
};&uart8 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&uart8m0_xfer &uart8m0_ctsn &uart8m0_rtsn>;
};&bus_npu {bus-supply = <&vdd_logic>;pvtm-supply = <&vdd_cpu>;status = "okay";
};&can0 {assigned-clocks = <&cru CLK_CAN0>;assigned-clock-rates = <200000000>;pinctrl-names = "default";pinctrl-0 = <&can0m0_pins>;status = "okay";
};&can1 {assigned-clocks = <&cru CLK_CAN1>;assigned-clock-rates = <200000000>;pinctrl-names = "default";pinctrl-0 = <&can1m1_pins>;status = "okay";
};&can2 {assigned-clocks = <&cru CLK_CAN2>;assigned-clock-rates = <150000000>;pinctrl-names = "default";pinctrl-0 = <&can2m1_pins>;status = "disabled";
};&cpu0 {cpu-supply = <&vdd_cpu>;
};&dfi {status = "okay";
};&dmc {center-supply = <&vdd_logic>;status = "okay";
};&gpu {mali-supply = <&vdd_gpu>;status = "okay";
};&i2c0 {status = "okay";vdd_cpu: tcs4525@1c {compatible = "tcs,tcs452x";reg = <0x1c>;vin-supply = <&vcc5v0_sys>;regulator-compatible = "fan53555-reg";regulator-name = "vdd_cpu";regulator-min-microvolt = <712500>;regulator-max-microvolt = <1390000>;regulator-init-microvolt = <900000>;regulator-ramp-delay = <2300>;fcs,suspend-voltage-selector = <1>;regulator-boot-on;regulator-always-on;regulator-state-mem {regulator-off-in-suspend;};};rk809: pmic@20 {compatible = "rockchip,rk809";reg = <0x20>;interrupt-parent = <&gpio0>;interrupts = <3 IRQ_TYPE_LEVEL_LOW>;pinctrl-names = "default", "pmic-sleep","pmic-power-off", "pmic-reset";pinctrl-0 = <&pmic_int>;pinctrl-1 = <&soc_slppin_slp>, <&rk817_slppin_slp>;pinctrl-2 = <&soc_slppin_gpio>, <&rk817_slppin_pwrdn>;pinctrl-3 = <&soc_slppin_gpio>, <&rk817_slppin_rst>;rockchip,system-power-controller;wakeup-source;#clock-cells = <1>;clock-output-names = "rk808-clkout1", "rk808-clkout2";//fb-inner-reg-idxs = <2>;/* 1: rst regs (default in codes), 0: rst the pmic */pmic-reset-func = <0>;/* not save the PMIC_POWER_EN register in uboot */not-save-power-en = <1>;vcc1-supply = <&vcc3v3_sys>;vcc2-supply = <&vcc3v3_sys>;vcc3-supply = <&vcc3v3_sys>;vcc4-supply = <&vcc3v3_sys>;vcc5-supply = <&vcc3v3_sys>;vcc6-supply = <&vcc3v3_sys>;vcc7-supply = <&vcc3v3_sys>;vcc8-supply = <&vcc3v3_sys>;vcc9-supply = <&vcc3v3_sys>;pwrkey {status = "okay";};pinctrl_rk8xx: pinctrl_rk8xx {gpio-controller;#gpio-cells = <2>;rk817_slppin_null: rk817_slppin_null {pins = "gpio_slp";function = "pin_fun0";};rk817_slppin_slp: rk817_slppin_slp {pins = "gpio_slp";function = "pin_fun1";};rk817_slppin_pwrdn: rk817_slppin_pwrdn {pins = "gpio_slp";function = "pin_fun2";};rk817_slppin_rst: rk817_slppin_rst {pins = "gpio_slp";function = "pin_fun3";};};regulators {vdd_logic: DCDC_REG1 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <500000>;regulator-max-microvolt = <1350000>;regulator-init-microvolt = <900000>;regulator-ramp-delay = <6001>;regulator-initial-mode = <0x2>;regulator-name = "vdd_logic";regulator-state-mem {regulator-off-in-suspend;};};vdd_gpu: DCDC_REG2 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <500000>;regulator-max-microvolt = <1350000>;regulator-init-microvolt = <900000>;regulator-ramp-delay = <6001>;regulator-initial-mode = <0x2>;regulator-name = "vdd_gpu";regulator-state-mem {regulator-off-in-suspend;};};vcc_ddr: DCDC_REG3 {regulator-always-on;regulator-boot-on;regulator-initial-mode = <0x2>;regulator-name = "vcc_ddr";regulator-state-mem {regulator-on-in-suspend;};};vdd_npu: DCDC_REG4 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <500000>;regulator-max-microvolt = <1350000>;regulator-init-microvolt = <900000>;regulator-ramp-delay = <6001>;regulator-initial-mode = <0x2>;regulator-name = "vdd_npu";regulator-state-mem {regulator-off-in-suspend;};};vdda0v9_image: LDO_REG1 {regulator-boot-on;regulator-always-on;regulator-min-microvolt = <900000>;regulator-max-microvolt = <900000>;regulator-name = "vdda0v9_image";regulator-state-mem {regulator-off-in-suspend;};};vdda_0v9: LDO_REG2 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <900000>;regulator-max-microvolt = <900000>;regulator-name = "vdda_0v9";regulator-state-mem {regulator-off-in-suspend;};};vdda0v9_pmu: LDO_REG3 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <900000>;regulator-max-microvolt = <900000>;regulator-name = "vdda0v9_pmu";regulator-state-mem {regulator-on-in-suspend;regulator-suspend-microvolt = <900000>;};};vccio_acodec: LDO_REG4 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;regulator-name = "vccio_acodec";regulator-state-mem {regulator-off-in-suspend;};};vccio_sd: LDO_REG5 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <1800000>;regulator-max-microvolt = <3300000>;regulator-name = "vccio_sd";regulator-state-mem {regulator-off-in-suspend;};};vcc3v3_pmu: LDO_REG6 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <3300000>;regulator-max-microvolt = <3300000>;regulator-name = "vcc3v3_pmu";regulator-state-mem {regulator-on-in-suspend;regulator-suspend-microvolt = <3300000>;};};vcca_1v8: LDO_REG7 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <1800000>;regulator-max-microvolt = <1800000>;regulator-name = "vcca_1v8";regulator-state-mem {regulator-off-in-suspend;};};vcca1v8_pmu: LDO_REG8 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <1800000>;regulator-max-microvolt = <1800000>;regulator-name = "vcca1v8_pmu";regulator-state-mem {regulator-on-in-suspend;regulator-suspend-microvolt = <1800000>;};};vcca1v8_image: LDO_REG9 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <1800000>;regulator-max-microvolt = <1800000>;regulator-name = "vcca1v8_image";regulator-state-mem {regulator-off-in-suspend;};};vcc_1v8: DCDC_REG5 {regulator-always-on;regulator-boot-on;regulator-min-microvolt = <1800000>;regulator-max-microvolt = <1800000>;regulator-name = "vcc_1v8";regulator-state-mem {regulator-off-in-suspend;};};vcc_3v3: SWITCH_REG1 {regulator-always-on;regulator-boot-on;regulator-name = "vcc_3v3";regulator-state-mem {regulator-off-in-suspend;};};vcc3v3_sd: SWITCH_REG2 {regulator-always-on;regulator-boot-on;regulator-name = "vcc3v3_sd";regulator-state-mem {regulator-off-in-suspend;};};};rk809_codec: codec {#sound-dai-cells = <0>;compatible = "rockchip,rk809-codec", "rockchip,rk817-codec";clocks = <&cru I2S1_MCLKOUT>;clock-names = "mclk";assigned-clocks = <&cru I2S1_MCLKOUT>, <&cru I2S1_MCLK_TX_IOE>;assigned-clock-rates = <12288000>;assigned-clock-parents = <&cru I2S1_MCLKOUT_TX>, <&cru I2S1_MCLKOUT_TX>;pinctrl-names = "default";pinctrl-0 = <&i2s1m0_mclk>;hp-volume = <20>;spk-volume = <3>;mic-in-differential;status = "okay";};};
};&i2c2 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&i2c2m1_xfer>;vm149c_0: vm149c@0c {compatible = "silicon touch,vm149c";status = "okay";reg = <0x0c>;rockchip,camera-module-index = <0>;rockchip,camera-module-facing = "back";};ov13850: ov13850@10 {compatible = "ovti,ov13850";status = "okay";reg = <0x10>;clocks = <&cru CLK_CIF_OUT>;clock-names = "xvclk";power-domains = <&power RK3568_PD_VI>;pinctrl-names = "default";pinctrl-0 = <&cif_clk>, <&ov13850_default_pin>;pwdn-gpios = <&gpio4 RK_PB2 GPIO_ACTIVE_HIGH>;reset-gpios = <&gpio0 RK_PD6 GPIO_ACTIVE_HIGH>;rockchip,camera-module-index = <0>;rockchip,camera-module-facing = "back";rockchip,camera-module-name = "ov13850-csi";rockchip,camera-module-lens-name = "ov13850-2mp";lens-focus = <&vm149c_0>;port {ov13850_out: endpoint {remote-endpoint = <&mipi_in_ov13850>;data-lanes = <1 2>;};};};gt9xx_lvds: gt9xx@5d {compatible = "goodix,gt928";reg = <0x5d>;pinctrl-names = "default";pinctrl-0 = <&touch_gpio>;interrupt-parent = <&gpio1>;interrupts = <RK_PA4 IRQ_TYPE_EDGE_FALLING>;irq-gpio = <&gpio1 RK_PA4 IRQ_TYPE_LEVEL_LOW>;reset-gpio = <&gpio1 RK_PB0 GPIO_ACTIVE_HIGH>;touchscreen-size-x = <1280>;touchscreen-size-y = <800>;touchscreen-swapped-x-y;uniq = "lvds";status = "okay";};gt9xx_dsi: gt9xx@14 {compatible = "goodix,gt928";reg = <0x14>;pinctrl-names = "default";pinctrl-0 = <&dsi_gt911_int>;interrupt-parent = <&gpio0>;interrupts = <RK_PA0 IRQ_TYPE_EDGE_FALLING>;irq-gpio = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;reset-gpio = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>;touchscreen-size-x = <1024>;touchscreen-size-y = <600>;uniq = "dsi";status = "okay";};polytouch: edt-ft5x06@38{compatible = "edt,edt-ft5406", "edt,edt-ft5x06";reg = <0x38>;pinctrl-names = "defaults";pinctrl-0 = <&ft5x06_int>;interrupt-parent = <&gpio0>;interrupts = <RK_PA0 IRQ_TYPE_EDGE_FALLING>;touchscreen-size-x = <1024>;touchscreen-size-y = <600>;status = "okay";};
};&i2c3 {status = "okay";rx8010: rx8010@32 {compatible = "epson,rx8010";reg = <0x32>;};pcf8563: pcf8563@51 {compatible = "nxp,pcf8563";reg = <0x51>;#clock-cells = <0>;};
};&i2s0_8ch {status = "okay";
};&i2s1_8ch {status = "okay";rockchip,clk-trcm = <1>;pinctrl-names = "default";pinctrl-0 = <&i2s1m0_sclktx&i2s1m0_lrcktx&i2s1m0_sdi0&i2s1m0_sdo0>;
};&iep {status = "okay";
};&iep_mmu {status = "okay";
};&jpegd {status = "okay";
};&jpegd_mmu {status = "okay";
};&mpp_srv {status = "okay";
};&nandc0 {#address-cells = <1>;#size-cells = <0>;status = "okay";nand@0 {reg = <0>;nand-bus-width = <8>;nand-ecc-mode = "hw";nand-ecc-strength = <16>;nand-ecc-step-size = <1024>;};
};/** There are 10 independent IO domains in RK3566/RK3568, including PMUIO[0:2] and VCCIO[1:7].* 1/ PMUIO0 and PMUIO1 are fixed-level power domains which cannot be configured;* 2/ PMUIO2 and VCCIO1,VCCIO[3:7] domains require that their hardware power supply voltages*    must be consistent with the software configuration correspondingly*	a/ When the hardware IO level is connected to 1.8V, the software voltage configuration*	   should also be configured to 1.8V accordingly;*	b/ When the hardware IO level is connected to 3.3V, the software voltage configuration*	   should also be configured to 3.3V accordingly;* 3/ VCCIO2 voltage control selection (0xFDC20140)*	BIT[0]: 0x0: from GPIO_0A7 (default)*	BIT[0]: 0x1: from GRF*    Default is determined by Pin FLASH_VOL_SEL/GPIO0_A7:*	L:VCCIO2 must supply 3.3V*	H:VCCIO2 must supply 1.8V*/
&pmu_io_domains {status = "okay";pmuio1-supply = <&vcc3v3_pmu>;pmuio2-supply = <&vcc3v3_pmu>;vccio1-supply = <&vccio_acodec>;vccio3-supply = <&vccio_sd>;vccio4-supply = <&vcc_1v8>;vccio5-supply = <&vcc_3v3>;vccio6-supply = <&vcc_1v8>;vccio7-supply = <&vcc_3v3>;
};&pwm3 {status = "okay";
};&pwm5 {status = "okay";
};&pwm14 {status = "disabled";
};&rk_rga {status = "okay";
};&rkvdec {status = "okay";
};&rkvdec_mmu {status = "okay";
};&rkvenc {venc-supply = <&vdd_logic>;status = "okay";
};&rkvenc_mmu {status = "okay";
};&rknpu {rknpu-supply = <&vdd_npu>;status = "okay";
};&rknpu_mmu {status = "okay";
};&saradc {status = "okay";vref-supply = <&vcca_1v8>;
};&sdhci {bus-width = <8>;supports-emmc;non-removable;max-frequency = <200000000>;status = "okay";
};&sdmmc0 {max-frequency = <150000000>;supports-sd;bus-width = <4>;cap-mmc-highspeed;cap-sd-highspeed;disable-wp;sd-uhs-sdr104;vmmc-supply = <&vcc3v3_sd>;vqmmc-supply = <&vccio_sd>;pinctrl-names = "default";pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>;//20220927 by ganstatus = "disabled";
};&sfc {status = "okay";pinctrl-names = "default";pinctrl-0 = <&fspi_pins>;flash: m25p80@0 {#address-cells = <1>;#size-cells = <1>;compatible = "spansion,m25p80", "jedec,spi-nor";reg = <0>;spi-max-frequency = <40000000>;m25p,fast-read;};
};&spdif_8ch {status = "disabled";pinctrl-names = "default";pinctrl-0 = <&spdifm1_tx>;
};&tsadc {status = "okay";
};&u2phy0_host {status = "okay";
};&u2phy0_otg {status = "okay";
};&u2phy1_host {status = "okay";
};&u2phy1_otg {status = "okay";
};&usb2phy0 {status = "okay";
};&usb2phy1 {status = "okay";
};&usb_host0_ehci {status = "okay";
};&usb_host0_ohci {status = "okay";
};&usb_host1_ehci {status = "okay";
};&usb_host1_ohci {status = "okay";
};&usbdrd_dwc3 {dr_mode = "otg";extcon = <&usb2phy0>;status = "okay";
};&usbdrd30 {status = "okay";
};&usbhost_dwc3 {status = "okay";
};&usbhost30 {status = "okay";
};&vad {rockchip,audio-src = <&i2s1_8ch>;rockchip,buffer-time-ms = <128>;rockchip,det-channel = <0>;rockchip,mode = <0>;
};&vdpu {status = "okay";
};&vdpu_mmu {status = "okay";
};&vepu {status = "okay";
};&vepu_mmu {status = "okay";
};&vop {status = "okay";assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>, <&cru DCLK_VOP2>;assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>, <&cru PLL_GPLL>;disable-win-move;
};&vop_mmu {status = "okay";
};&vp0 {cursor-win-id = <ROCKCHIP_VOP2_CLUSTER0>;
};&vp1 {cursor-win-id = <ROCKCHIP_VOP2_CLUSTER1>;
};&edp {status = "disabled";pinctrl-names = "default";pinctrl-0 = <&edpdpm0_pins>;ports {port@1 {reg = <1>;edp_out_panel: endpoint {remote-endpoint = <&panel_in_edp>;};};};
};&edp_phy {status = "disabled";
};&edp_in_vp0 {status = "disabled";
};&edp_in_vp1 {status = "disabled";
};&route_edp {status = "disabled";connect = <&vp1_out_edp>;
};
&route_dsi1 {status = "disabled";connect = <&vp1_out_dsi1>;
};&dsi1_in_vp0 {status = "disabled";
};&dsi1_in_vp1 {status = "disabled";
};&dsi1 {status = "disabled";//rockchip,lane-rate = <1000>;dsi1_panel: panel@0 {status = "okay";compatible = "simple-panel-dsi";reg = <0>;reset-delay-ms = <60>;enable-delay-ms = <60>;prepare-delay-ms = <60>;unprepare-delay-ms = <60>;disable-delay-ms = <60>;dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST |MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET)>;dsi,format = <MIPI_DSI_FMT_RGB888>;dsi,lanes  = <4>;panel-init-sequence = [];panel-exit-sequence = [];panel-width-mm = <68>;panel-height-mm = <121>;backlight = <&dsi1_backlight>;enable-gpios = <&gpio0 RK_PB0 GPIO_ACTIVE_HIGH>;display-timings {native-mode = <&panel7_1024x600>;panel7_1024x600: timings {hback-porch     = <48>;hfront-porch    = <40>;hactive                 = <1024>;hsync-len               = <48>;vback-porch     = <48>;vfront-porch    = <40>;vactive         = <600>;vsync-len       = <4>;clock-frequency = <45000000>;vsync-active    = <0>;hsync-active    = <0>;de-active       = <0>;pixelclk-active = <0>;};};ports {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;panel_in_dsi: endpoint {remote-endpoint = <&dsi_out_panel>;};};};};ports {#address-cells = <1>;#size-cells = <0>;port@1 {reg = <1>;dsi_out_panel: endpoint {remote-endpoint = <&panel_in_dsi>;};};};};&hdmi {status = "disabled";rockchip,phy-table =<92812500  0x8009 0x0000 0x0270>,<165000000 0x800b 0x0000 0x026d>,<185625000 0x800b 0x0000 0x01ed>,<297000000 0x800b 0x0000 0x01ad>,<594000000 0x8029 0x0000 0x0088>,<000000000 0x0000 0x0000 0x0000>;
};&hdmi_in_vp0 {status = "disabled";
};&hdmi_in_vp1 {status = "disabled";
};&route_hdmi {status = "disabled";connect = <&vp0_out_hdmi>;
};&lvds {status = "disabled";phys = <&video_phy0>;phy-names = "phy";ports {port@1 {reg = <1>;lvds_out_panel: endpoint {remote-endpoint = <&panel_in_lvds>;};};};
};&lvds_in_vp1 {status = "disabled";
};&lvds_in_vp2 {status = "disabled";
};&route_lvds {status = "disabled";connect = <&vp2_out_lvds>;
};&xin32k {status = "disabled";
};&uart3 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&uart3m1_xfer>;
};&uart4 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&uart4m1_xfer>;
};&uart5 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&uart5m1_xfer>;
};/
&uart0 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&uart0_xfer>;
};&uart6 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&uart6m1_xfer>;
};&uart7 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&uart7m1_xfer>;
};&uart9 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&uart9m1_xfer>;
};
//
&spi0 {pinctrl-names = "default", "high_speed";pinctrl-0 = <&spi0m1_cs0 &spi0m1_pins>;pinctrl-1 = <&spi0m1_cs0 &spi0m1_pins_hs>;status = "disabled";spi@0 {compatible = "rockchip,spidev";reg = <0>;spi-max-frequency = <50000000>;};
};&spi2 {pinctrl-names = "default", "high_speed";pinctrl-0 = <&spi2m1_cs0 &spi2m1_cs1 &spi2m1_pins>;pinctrl-1 = <&spi2m1_cs0 &spi2m1_cs1 &spi2m1_pins_hs>;status = "okay";spi@0 {compatible = "rockchip,spidev";reg = <0>;spi-max-frequency = <50000000>;};spi@1 {compatible = "rockchip,spidev";reg = <1>;spi-max-frequency = <50000000>;};
};

Chapter2 创龙瑞芯微RK3568设备树1(修改设备树GPIO和串口)

原文链接:https://blog.csdn.net/weixin_45426095/article/details/135214400

前言

最近一直在搞3568的东西,涉及到底层的设备树修改,驱动编写等等,忙的焦头烂额的,也没时间往下面写东西了。今天差不多底层的东西快弄完了,把最近的感悟给大家分享下,并且加入点设备树的基础知识。给刚刚涉足开发板学习的小伙伴一点帮助。当然对于大神们来说,写的肯定是皮毛。一起共勉!

基础

涉及到的知识,我会用类比的方法和STM32的硬件做对比,其实弄完之后发现两个差不多,没有什么本质的区别。所以小伙伴看之前的基础是必须编写过单片机的程序,对单片机的架构有一定的了解,要不看完会更迷茫。

题外话

学习这个真是很痛苦,并且不知道自己做的对不对,需要一遍一遍的测试。并且问了其他小伙伴,有一个共同的感觉:随着年龄的增加,学习能力大大下降。并且已经抽不出那么多精力去学习能力了。

每天刷抖音,看到什么35岁失业什么的,其实吧,感觉有三个原因吧,仅仅是自己猜测:

(1)技术没有做扎实就转到管理岗了。公司发展太快,所以刚进去的技术还没有很好的基础,就转到管理,使得自己的技术不扎实,再从管理岗转回来,已经很难了。

(2)技术也不错,但是忘记了学习,一直做自己习惯的东西,然后到了管理。但是到了管理之后,技术更新了,以前的技术已经适应不了现在的东西了。这个应该是大部分人的问题吧。就算在一个技术上做的时间长了,也会不学习了,感觉现在的东西够了。当然学习新的东西会很难、很闹心。其实我也想一直做单片机,也就控制几个灯,控制几个外设。然后搞搞逻辑啥的。一直在自己的舒适区。

(3)技术也够,学习也一直在学,但是换个工作工资低了,不愿将就。但愿每个人都是因为这个原因。

内容

这次介绍4个内容,都是最简单的外设:(1)GPIO,(2)串口,(3)I2C,(4)CAN。这4个应该能包含大部分硬件应用了,当然还有麻烦的,后面再慢慢介绍,一点一点的来。先介绍最基本的,大概有个印象。

1.GPIO

	GPIO_InitTypeDef GPIO_Initure;__HAL_RCC_GPIOE_CLK_ENABLE();				GPIO_Initure.Pin = GPIO_PIN_15;			GPIO_Initure.Mode = GPIO_MODE_INPUT;  		GPIO_Initure.Pull = GPIO_PULLUP;         			GPIO_Initure.Speed = GPIO_SPEED_FREQ_VERY_HIGH;  	HAL_GPIO_Init(GPIOE, &GPIO_Initure);     		

这个是单片机的GPIO初始化。定义GPIO结构体,开时钟,管脚号,管脚输入,管脚模式,管脚速度,参数传入结构体。

HAL_GPIO_WritePin(GPIOE, GPIO_PIN_9, GPIO_PIN_SET);

这个是控制程序。直接根据HALk库给的函数就行。要是不用HAL库,自己控制,也都是别人给好的API函数。

对比下来,在Linux的3568设备树里:

        gpioled1 {compatible = "MY,led1";led1-gpio = <&gpio0 RK_PD5 GPIO_ACTIVE_HIGH>;status = "okay";};

先说第二句:gpio的管脚定义,第三句:状态定义。

第一句是匹配定义,这个后面再说。后面牵涉到驱动部分,这个后面会详细介绍,所以现在先由个概念,知道是这么回事。至此到这里,GPIO的设备树部分介绍完毕。下面说下两者的区别,仅仅说对于GPIO设定部分的区别哈,其他的就不说了,没啥用。相同点:定义了管脚,并且定义了初始电平;不同点:单片机定义了管脚的输入和输出,3568定义了匹配字。至于语法的区别,就不做过多的介绍了。所以,3568里面还需要对其他的进行定义,第一个:输入输出定义,第二个:控制程序。这个后面再说。先说下,输入输出定义在驱动里面定义,控制程序也是线程的API,只要拿过来使用就行了。

2.串口

    GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;GPIO_InitStruct.Alternate = GPIO_AF7_USART2;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

先说第一部分,管脚定义。这部分应该很熟悉,定义管脚,定义管脚复用,然后定义复用到什么上面,然后参数传入结构体。这部分是管脚的定义。

  huart2.Instance = USART2;huart2.Init.BaudRate = 1000000;huart2.Init.WordLength = UART_WORDLENGTH_8B;huart2.Init.StopBits = UART_STOPBITS_1;huart2.Init.Parity = UART_PARITY_NONE;huart2.Init.Mode = UART_MODE_TX_RX;HAL_UART_Init(&huart2);

然后说第二部分,串口定义。前面定义了管脚,相当于管脚已经复用到了串口上,然后定义串口的信息。对应串口2,波特率,起始位,停止位等。

    HAL_NVIC_SetPriority(USART2_IRQn, 0, 0);HAL_NVIC_EnableIRQ(USART2_IRQn);

然后就是中断函数,接收和发送中断。对应的就是接收和发送函数中断。这个API在it.c里面应该可以找到。要是找不到就直接去库函数里面找。

对比下来,在3568的设备树里:

uart1 {/omit-if-no-ref/uart1m0_xfer: uart1m0-xfer {rockchip,pins =/* uart1_rxm0 */<2 RK_PB3 2 &pcfg_pull_up>,/* uart1_txm0 */<2 RK_PB4 2 &pcfg_pull_up>;};/omit-if-no-ref/uart1m0_ctsn: uart1m0-ctsn {rockchip,pins =/* uart1m0_ctsn */<2 RK_PB6 2 &pcfg_pull_none>;};/omit-if-no-ref/uart1m0_rtsn: uart1m0-rtsn {rockchip,pins =/* uart1m0_rtsn */<2 RK_PB5 2 &pcfg_pull_none>;};/omit-if-no-ref/uart1m1_xfer: uart1m1-xfer {rockchip,pins =/* uart1_rxm1 */<3 RK_PD7 4 &pcfg_pull_up>,/* uart1_txm1 */<3 RK_PD6 4 &pcfg_pull_up>;};/omit-if-no-ref/uart1m1_ctsn: uart1m1-ctsn {rockchip,pins =/* uart1m1_ctsn */<4 RK_PC1 4 &pcfg_pull_none>;};/omit-if-no-ref/uart1m1_rtsn: uart1m1-rtsn {rockchip,pins =/* uart1m1_rtsn */<4 RK_PB6 4 &pcfg_pull_none>;};};

这个是pinctrl里面的设备树结构。里面包含串口的各种复用管脚定义。里面m0和m1可以自己选择,当然选择方法在后面。

对比不同点:单片机里面直接写出来用哪个管脚,用哪个需要自己去写。而3568里面全部给你写出来,然后你自己再配置。

    uart1: serial@fe650000 {compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";reg = <0x0 0xfe650000 0x0 0x100>;interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;clock-names = "baudclk", "apb_pclk";reg-shift = <2>;reg-io-width = <4>;dmas = <&dmac0 2>, <&dmac0 3>;pinctrl-names = "default";pinctrl-0 = <&uart1m0_xfer>;status = "disabled";};

然后底层的设备树,这部分不用修改,别人给写好的。至于怎么写,不用管,只知道在这里就行。

解释下:匹配字,状态,寄存器地址。中断地址,时钟,时钟名称,寄存器偏移,寄存器宽度,DMA,管脚名称,管脚初始定义。

其实在单片机里,中断函数已经给你配好了,而设备树里直接给你写出来了。怎么写的 ,千万别去研究,别人做好的,直接用就行,或者直接知道是啥东西就行。然后管脚选用的是m0。这个是别人的初始定义,后面可以再修改。所以这个地方就看看,知道是啥就行,至于reg啥的,千万别管。

&uart1 {status = "okay";pinctrl-0 = <&uart1m1_xfer>;
};

这是后面的自己定义。前面别人给个初始的,后面用不用看自己。用的话就来个okay,不用就不用管。要是用的话,管脚不一样咋弄,那就给改改。

然后,然后就没了。就那么多东西。

对于GPIO中的驱动,GPIO的驱动简单,可以自己写一个。但是串口的比较麻烦,别人都写好了,不用管。配好设备树之后,linux会自己加载驱动函数。就像单片机里面的收发中断,然后放到buffer里面。其实你也不知道咋驱动的,就是可以收到数,然后解析就行。

切记:千万别深究,千万别深究。

不同

设备树放的比较乱,如果别人开发的不好,放的会更乱,所以选开发板的时候选大厂的。放的位置好,你就好看点,学习起来也快。至于程序放的位置,放哪都行,随你意,但是最好按照别人写好的去放,看起来方便。

单片机里面的东西,都是一块一块的,相对来说,别人都给你封好了,3568或者其他开发板里面的程序都是按照功能一大块放一起,看起来比较麻烦。

总结

设备树就是将单片机的不同的功能,大家放一起,然后自己挑出来。并且用很晦涩的表达方式表达出来,不用看懂具体是啥,也不用纠结怎么去编写,会改管脚就行。给的pdf里面肯定会有说明怎么弄,要是没有,引用别人的话:赶紧跑路,还搞啥,自己肯定编不了。

后续

接触的时候脑袋疼,这是啥,这又是啥。当真的去一个一个的琢磨之后,才发现,哦,和单片机差不多。学习顺序:克服心理障碍,静下心,一句一句的看,不会的查,改,改,改,不用担心改错,反正也改不坏。还有一定要做好备份,在修改任何东西前,一定先保存一份,万一改错了还能复原,再从开始改。

后面介绍I2C和CAN的设备树,然后再介绍GPIO的驱动函数,然后就再ETH,然后再其他的。慢慢来。喜欢的小伙伴点个关注,后续文章继续发送。

Chapter3 QT串口大量数据动态实时显示(三)========“customplot绘图步骤”

原文链接:https://blog.csdn.net/weixin_45426095/article/details/110261931

前言

在《QT串口动态实时显示大量数据波形曲线(一)》和《QT串口动态实时显示大量数据波形曲线(二)》中介绍了串口编程和chart绘图编程。也介绍了chart和customplot绘图的基本区别。customplot绘图在代码上非常简单,不用点,线,坐标系和图表一层一层的放那么麻烦。

第一部分: 串口接收大量数据动态显示的难点

串口大量数据QT接收时问题的原因:

(1)10ms40个8位数。在示波器上监视串口波形,其实这个总线负载率差不多到了60%。如果再想传输更多的数据,只能利用更高的波特率,但是119200差不多是最高的波特率了,更高的只能自己去编写代码,比较麻烦。将总线负载率进一步升高。底层的传输机制不太允许(底层芯片的DMA传输已经用上),传输数据太多容易引起错误码。

(2)上层串口接收机制不完善,也就是《一》中介绍的串口接收readyread函数和readall函数的问题,所以传输数据不能进一步增加。进一步增加之后接收中断(暂时这样叫吧)次数也随之增加,影响绘图时间,同时接收的数据会出现丢点现象,这一点我在试验时验证过,接收数据太多就会丢点。

(3)接收数据多之后,绘图就会增加。数据点增加不会大幅度增加时间,但是增加图表数量会增加程序执行时间,对串口的接收造成影响。这一点也经过验证。

选择customplot绘图的原因:

(1)程序简单,(2)图表多种多样,好看,(3)手势程序简单(观察波形时使用)

Chapter4 创龙瑞芯微RK3568参数修改(调试口波特率和rootfs文件,串口波特率默认:1500000bps,建议修改为115200bps)

前言

前面写了基本的文件编译、系统编译和系统烧写,差不多前期工作就准备的差不多了。目前的东西能解决大部分入门级的需求。当然如果需要开发的话,还需要修改其他东西,下面一步一步的给小伙伴介绍关键参数怎么修改。

给定波特率

拿到开发板的时候,按照给的文档一步一步的来,达到烧写系统的程度并不是很难,但是调试的时候又遇到了问题。第一个就是连接调试串口的时候,这个挺麻烦。

串口波特率:1500000。

连接的软件:SecureCRT 7.3,必须用这个,其他的试过,好像都出不来,没办法,只能用跟这个,给的软件里面有,可以直接安装。

进去之后按照步骤去改就行,至于怎么设置,这个就不多介绍了,很多网页都可以搜到。唯一需要告诉的就是1500000怎么设置。开始的很迷茫,串口波特率都是选择的,咋有1500000呢?

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com