首页 > 其他分享 >SmartDeviceControl_FreeRTOS_Hal_Zet6

SmartDeviceControl_FreeRTOS_Hal_Zet6

时间:2024-08-25 16:48:58浏览次数:7  
标签:git Hal SmartDeviceControl Zet6 FSMC LCD Station 接入点 设备

SmartDeviceControl_FreeRTOS_Hal_Zet6

系统框图

框图

显示子设备

框图

image-20240523144948233
  • 我们不想让文件互相调用

遇到的问题:OLED 无响应,I2C无法工作

解决:使用的是软件I2C,问题在于OLED的驱动中已经包含获取从机应答的函数

更新:屏幕为2.8TFT-LCD

image-20240606160258431

使用FSMC来模拟8080并口驱动LCD

  1. FSMC_D0 - FSMC_D15: 16条数据线
    • FSMC_NOE --- LCD 读使能
    • FSMC_NWE --- LCD写使能
    • FSMC_NE1——LCD片选
    • FSMC_A10——LCD 数据/指令切换 高电平表示数据,低电平表示指令
    • 4条线
    • LCD_BL —— GPIO_B_0背光控制
    • LCD_RST—— 复位:硬件上已经连接到reset上,无需配置
  • 硬件上的连接:

    image-20240607214810809

    • 这里的FSMC_NE4连接到LCD上,故我们需要访问FSMC BANK1 NOR/PSRAM 4,即0x6c00 0000-0x6fff ffff,这样FSMC才会自动产生时序。
    • 我们使用FSMC即是当我们读写该地址范围时,会自动产生时序,访问的地址位为1,地址线输出高电平。
      • 我们的A10来切换数据/指令两种状态便是通过访问两个不同的地址。
    • cubeMX的配置:
      • image-20240607215656290

添加:电阻触摸屏XPT2046

  • 使用模拟spi的方式和触摸控制器通讯,ADC为12位,这也是2046的由来

  • 触摸的位置和电压输出有一个线性的变化,通过ADC采集这个电压从而计算出位置

    • 校准:确定这个线性的关系

    • MOSI,MISO,CS,SCLK,INT五条线和触摸IC进行连接,INT(PEN)用于触摸时产生一个中断信号。

        1. 校准屏幕并保存校准数据到EEPROM
    • 使用EEPROM —— 24C02来存储校准触摸屏的数据

      • 24C02 设备的读操作地址为:0xA1;写操作地址为:0xA0
      • image-20240609155252202
      • 读时序复合时序,包括读时序和写时序,先发送写地址,再写进一个要读取的地址;接着再发送读地址,从机便会一直传输数据,直到主机发送非应答信号才停止。
      • 写操作包括 单字节写入 和 页写入,在单字节写时序时,每次写入数据时都需要先写入设备的内存地址才能实现;页写入仅需写入第一个内存地址,后面会根据顺序写入。

移植LVGL

遇到的问题:

1.调试时LCD运行正常,退出调试直接上电运行出现错误
	原因:
		1.外围设备没有初始化好,考虑加上初始化时的延时函数
		2.该初始化程序的下一个程序对其有所影响
2.LVGL显示的方向性问题
	原因:和设置LCD的扫描方向有关

输入子系统

  • 网络输入 可作为一个输入设备,将输入的信息放到环形缓冲区

    • 网络输入出现的问题:传输几次,才收到一次。

      • 原因:
      image-20240531174953385
      • 解决:

      image-20240531175752290

网络子系统

框图

image-20240530184525898 image-20240530130942163
  • 连接网卡设备可以使用不同的接口,预留出接口可扩展
graph LR A[Net_device]==>B[esp8266]==>c[AT_Command]==>D[UART_dev]==>e[KAL_UART_DEV]==>f[CAL_UART_DEV]

网络设置

image-20240530124444802

image-20240530124559409

image-20240530125818921

image-20240530124655005

遇到的问题

image-20240531094406213

ESP-01S

Pasted image 20240501110820

sntp

image-20240605114035759

image-20240605114059440

使用MQTT连接阿里云平台AT指令

  1. AT+CWMODE=1 //配置STA模式
  2. AT+CIPSNTPCFG=1,8,"cn.ntp.org.cn","ntp.sjtu.edu.cn" //配置时间服务器,进行时间同步
  3. AT+CWJAP="SSID","SSID_password" //连接wifi
  4. AT+MQTTUSERCFG=0,1,"NULL","name","password",0,0,"" //设置MQTT属性
  5. AT+MQTTCLIENTID=0,"ClienID" //设置MQTT ID,注意!!要在ID信息每一个”,“前加”\“进行转义!!!
  6. AT+MQTTCONN=0,"域名",1883,1 //发送MQTT域名,域名获取
  7. AT+MQTTSUB=0,"订阅topic",1 //订阅的主题

相关知识

STA和SoftAP

在无线网络领域,特别是Wi-Fi技术中,"Station"(简称STA)和"SoftAP"(Software Access Point)是两个重要的概念。它们分别代表着客户端和接入点的角色。

Station (STA)

Station(简称STA)是指Wi-Fi网络中的客户端设备,它可以连接到一个或多个接入点(Access Point, AP),以便访问互联网或其他网络资源。Station通常指的是具有Wi-Fi功能的设备,如智能手机、平板电脑、笔记本电脑等。

SoftAP (Software Access Point)

SoftAP(Software Access Point)是一种软件实现的接入点,它可以将一个设备转变为Wi-Fi接入点,允许其他Station设备连接到它。SoftAP常用于嵌入式设备或移动设备,如智能家居设备、便携式路由器等。

  • 功能
    • 模拟一个Wi-Fi接入点。
    • 允许其他Station设备连接并访问网络资源。
    • 可以配置为开放或受密码保护的网络。
  • 特点
    • 可以在没有物理接入点的情况下创建Wi-Fi网络。
    • 通常用于设备配置或临时网络搭建。
    • 设备本身既可以作为SoftAP也可以作为Station,实现设备间的直接通信。

比较

  • 角色
    • Station:作为客户端,连接到接入点。
    • SoftAP:模拟接入点,允许其他Station连接。
MQTT
  • 它是物联网常用的应用层协议,运行在 TCP/IP 中的应用层中,依赖 TCP 协议,因此它具有非常高的可靠性
  • 三个角色:发布者(Publisher)、服务器(Broker)以及订阅者
    (Subscriber),我们所使用的云平台便是服务器
  • 因此订阅者需要指定订阅的主题名字与服务质量(QoS),订阅者能订阅多个主题,也就能接收到多个发布者发布的消息。
  • 发布者也需要首先与服务器建立会话,并且指定发送的主题名字与服务质量,同时它也能向多个不同的主题发送消息。
  • 主题:一个主题可以有多个级别,各个级别之间用斜杠字符分隔,
    例如/test 和 /test/test1/test2 都 是有效的主题。
  • 连接需要的参数:
    • 客户端ID:用于标识客户端并跟踪其会话状态。这是MQTT协议的核心组件之一,因为它帮助服务器区分不同的客户端并处理它们的会话。
    • 用户名和密码:用于客户端的身份验证。虽然不是所有MQTT服务器都要求认证,但对于需要认证的服务器来说,这些凭据是非常重要的,因为它们确保了客户端的安全性和权限管理。
    • 服务器主机地址,端口号1883

业务子系统

  • 遇到的问题:网络输入事件无法控制设备

    • 原因

      • image-20240601102804441

FreeRTOS

image-20240601154150124

  • 队列:输入队列
    • 谁放队列:
        1. 按键输入事件:在中断处理函数中,将事件放入队列
        2. 网络输入解析并上报为事件
    • 谁读队列:
        1. App综合控制函数,读取队列并控制

出现的错误

  • 在中断中调用FreeRTOS的代码时,中断的优先级 大于 RTOS允许的最高优先级
    • 即FreeRTOS能够参与到中断的最高优先的等级
image-20240604231010185
  • 消息队列传输的本质
    • image-20240605111217321
    • 实质上是数据之间的复制

GIT需要注意的问题

  1. 一个分支进行修改并提交到暂存区,此时切换分支会导致更改影响到另一个分支

解决:

  1. 使用git stash 来将原来分支的内容进行暂存,并最好加上描述git stash save ""。使用方法:git-stash用法小结

  2. 将分支的工作区内容丢弃

    放弃修改
    如果不指定切换到哪个分支,那就是切换到当前分支,虽然HEAD的指向没有变化,但是后面的两个恢复过程依然会执行,于是就可以理解为放弃index和工作区的变动。但是出于安全考虑 git 会保持 index 的变动不被覆盖。

    1、只放弃工作区的改动,index 保持不变,其实就是从当前 index 恢复 工作区:

    放弃工作区中全部的修改
    git checkout .

    放弃工作区中某个文件的修改:
    git checkout -- filename

    先使用 git status 列出文件,然后 git checkout -- app/Http/Controllers/Read/Read3Controller.php

  1. 更新.gitignore,还需要手动将已添加跟踪的文件移除

更新 Git 忽略已追踪的文件: 如果你已经将一些应该被忽略的文件添加到了Git中,那么仅修改.gitignore文件是不够的。你需要使用git rm --cached <file>命令来从Git索引中移除文件,但不删除实际的文件:

git rm --cached path/to/file.log
移除整个目录,需要加上-r,递归删除
git rm --cached -r

然后,再次添加.gitignore文件,确保Git注意到更新:

git add .gitignore

各种问题

  1. 在Keil进入debug时直接进入运行状态,无法打断无法调试

    原因:进入debug时,没有给设备上电,仅仅依靠调试器的电源,供电不足,接上电源之后,正常运行

  2. vscode中有时候出现符号无法解析

    解决:

    1. 打开要刷新的项目文件夹。
    2. 按下键盘上的Ctrl + Shift + P组合键,打开命令面板。
    3. 输入”Reload Window”并选择该选项。

GPIO

标签:git,Hal,SmartDeviceControl,Zet6,FSMC,LCD,Station,接入点,设备
From: https://www.cnblogs.com/huajchen/p/18378593

相关文章

  • 机器学习详解-第二章-实践方法论-学习笔记-[DataWhale X 李宏毅苹果书 X AI夏令营]
    在调整模型的过程中可能会遇到许多问题,这里为了处理这些问题(前期初学情况),从而给出了一个章节用于学习相关的技巧。1.模型偏差模型偏差可能会影响模型训练,我们在训练的时候,将所有的函数集合在一起得到一个函数的集合,但是这个函数的集合大小是我们不确定的,可能会因为太小,其中的......
  • halcon中如何截取字符串一部分
    path:='C:/Users/admini/Desktop/vision1/1.bmp'**//**:从后向前获取第一个字符“/”的下标tuple_strrstr(path,'/',Position)**//**:获取字符长度tuple_strlen(path,Length)**//**:截取指定起始下标到结束下标长度的字符串tuple_substr(path,Position+1,Leng......
  • Datawhale X 李宏毅苹果书 AI夏令营task1笔记
    一、什么是机器学习机器学习:通过从经验中学习,使计算机能够从数据中提取出规律、模式和知识,并利用这些知识来做出预测、做出决策或执行任务,而无需明确地编程规则。二、机器学习常见概念1.监督学习和无监督学习1.1监督学习定义:提供输入数据和其对应的标签数据,然后搭建一个模型,模......
  • Datawhale X 李宏毅苹果书 AI夏令营 task2
    1线性模型的基本形式线性模型要做的有两类任务:分类任务、回归任务分类的核心就是求出一条直线w的参数,使得直线上方和直线下方分别属于两类不同的样本回归就是用来拟合尽可能多的点的分布的方法,我们可以通过拟合的直线知道一个新样本的相关数值线性模型:试图学得一个通过属性的......
  • Datawhale X 李宏毅苹果书 AI夏令营 -《深度学习详解》Task1
    深度学习基础学习目标理解深度学习的常见概念。掌握优化神经网络的方法。找到优化神经网络失败的原因。学习调整学习率(lr)的高级方法。1、局部极小值与鞍点在局部极小值与鞍点之前,首先了解一个特殊的点-临界点。1.1临界点通常将梯度为零的点统称为“临界点”。什么时......
  • CSharp联合halcon实现模板匹配
    前言1、加载并显示图像功能。2、图像拖动缩放功能。3、绘制ROI:矩形、方向矩形、圆形、椭圆形。4、创建模板:参数修改、模板轮廓显示。5、匹配模板:参数修改、匹配轮廓显示、匹配结果显示。案例实操代码结构HalconModelSet_Ex:该目录空间下存放halcon算子相关模型(......
  • C#联合halcon实现connection后的物料上色、物料计数、物料框选
    一、效果预览二、实现步骤三、代码部分ReadImageThresholdHalconWindowShowImageRectangleDef类库GenRectanglepublicstaticvoidGenRectangle(HObjectRegion,outHObjectExternalRegion,outRectangleDefrectangleDef,boolisMargin,HWindowhWindow)......
  • Vue 学习 Ref shallowRef triggerRef customRef (Ref 和 Reactive的对比)
    RefshallowReftriggerRefcustomRef针对对象(引用类型)来说:Ref:深层次的检查后面的对象的每一层是否改变,会改变值,且页面渲染shallowRef:浅层次的检查对象内,想要修改必须要要对.value对象进行重新赋值obj.value.name='456'//这种方式只会让对象值更改,但不会让页面重新渲染,......
  • Hall 定理
    Conventions我们约定\(G=(V,E)\)是一个标准的二分图,使用\(V_1,V_2\)来描述两侧的不同的集合,约定\(V_1\cupV_2=V\)且\(\left\lvertV_1\right\rvert<\left\lvertV_2\right\rvert\)。Theorem一个二分图存在完备匹配的充要条件是对于左部点大小为\(k\)的任意子集\(S\)......
  • Halcon图像减操作
    图像减操作,也叫图像灰度值的操作可以得到固定位置的差异 *区域处理read_image(car1,'D:/hoclan/traffic1.png')read_image(car2,'D:/hoclan/traffic2.png')*显示边缘模式dev_set_draw('margin')*图像减操作(图像灰度值的操作)可以得到固定位置的差异*(Tra......