wk2168驱动调试(一)

拿到wk2168的开发板了,前面硬件人员整烧了一块。这样的板子比较好调,硬件相对来说是验证过的,只要把软件驱动移到我们的系统下就可以。
介绍一下wk2168芯片的功能,这是一块成都本地公司开发的扩串口的芯片,WK2168是首款具备256级FIFO的低功耗并支持 UART/SPITM/IIC/8位并行总线接口的
4通道UART器件。可以通过模式选择使得该芯片工作于以上任何一种主接口模式,将选定的主接口扩展为4个增强功能的UART。 我们板子上要的串口比较多
其实别的接口也多,基本都占完了。准备用串口扩串口的方式来增加串口。主CPU上有4个串口,再用一扩四的芯片,达到除调试口外达到16个串口,这样主板上就
有足够的接口供外设接入。




其实原理是通过板载口接到wk2168的主串口上,在2168上转成4路子串口,板载口和主口通信采用高的传送速率,子串口速率通常工作在9600的波特每率下。数据收发中断采用的是板上的中断线,这样4个串口的
数据收发中断,都通过一个中断号上传。还有reset信号,看文档要求用gpio来完成reset。
硬件原理比较清楚,硬件联线也可以确定,两块板用杜邦线来联接的,速率不高的情况下,这种飞线方式基本可以保证信号完整。以前调phy与mii通信就遇到过信号质量问题。所以,专门提出来说。


驱动程序上,厂家提供了别的主板的驱动程序,拿过来改成我们cpu的体系。
基本框架是板载口的各功能寄存器定义完成应射,完成波特率设定,和最基本的数据收和发的基础函数。中断线与中断服务程序挂接。这个主口不用初始化,手册上说发0x55就会自己检测波特率
子口初始化不需要做什么修改,厂家的驱动就够用了。


硬件软件都准备好后,进入调试过程。


1.把数据线接到usb转ttl上,通过板子向pc发送数据,验证板载串口的波率设置和数据收发操作是否正确。这一步把以前vk3234的操作拿过来就可以了。实际上一把就通了。吐槽下厂家代码,小公司写的代码全是
数字,连个宏都不定义,根本看不懂他们的板载口初始化,也没有注解没说明,一个函数干了几个功能。
2.板载口通了,子口初始化不用改,这个部分在串口驱动上是纯软件的操作,因为没有打开,不会实际操作硬件,就这样子口初始化也过了。
3.主口与板载口协商。驱动源码是最后阶段才发0x55去协商,但每次都挂在这个地方了,发完55就会有个读寄存器,一直等在这个函数上了,说明没有读到数据。这个基本的读操作是板载口的操作,我自己提供的。
所以这个问题应当是发0x55后,主口没有检测到正确的波特率。问FAE,他们的回答是reset不成功,才会有这个问题,文档上推荐gpio来做reset,我们用手动来reset。没办法,只有找一根gpio来reset一下。
在主板上找到一个gpio口线,飞到wk2168上,程序上增加了reset的操作。重新初始化,驱动程序不再挂在读寄存器上了。这样驱动基本上挂上去了。
4.编写串口读写程序,直接cat /dev/ttysWK2的方式测试,硬件上用usb转232接到wk2168的子口上,通过串口工具收发数据,看到发送字符和接收字符是一样的,基本说明驱动调试基本功能正常通过。


深入验证:
由于我们的串口拿来收发数据,不完全是字符,就要进行全面的测试。各种各样的数据,主要的波特率,硬流控等,还有rs485功能。
目前发现3个问题:
1.发送32个或以上字符时,一次就卡死,低于32个,发送没有问题。
2.发送低于f的数字就会变化,0x0a发送还要挂死。
3.发送11时,还会丢数据,第一个数据要丢。


这几个问题好基础,看样子跟驱动关系不大,跟芯片内部处理上有问题。和FAE协商定位这些问题,如果解决不了,估计这块芯片都用不成。如果解决了,后面再写出来,其实芯片也是人写的程序,肯定也存在bug。
但是否能解决。以前用过他们家的vk3234,没有上面的问题。
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
### 回答1: wk2168 是一款基于STM32 HAL的嵌入式开发板。STM32 HAL(Hardware Abstraction Layer)是STMicroelectronics推出的一种针对STM32系列微控制器的硬件抽象层。它提供了一系列函数库,使得开发者可以更加方便地进行底层硬件的操作和驱动开发。 在使用wk2168开发板时,我们可以充分利用STM32 HAL提供的丰富函数库来实现各种功能。例如,通过HAL库可以轻松地配置GPIO(通用输入输出端口),设置为输入或输出,并进行读写操作。还可以使用HAL库配置定时器,产生各种中断信号或PWM波形。HAL还提供了USART(串行通信)和I2C(串行总线通信)等外设的配置和操作函数,方便进行串口通信和外部设备的数据交互。 在使用STM32 HAL开发时,我们可以通过CubeMX(一个专门用于STM32硬件配置的图形化工具)来自动生成初始化代码,包括时钟配置、引脚定义、外设配置等。然后,我们可以在主函数中进行逻辑代码的编写和实现。 总之,wk2168开发板在STM32 HAL的支持下,提供了丰富的硬件抽象函数库,方便开发者进行底层硬件的操作和驱动开发。使用HAL库,可以大大提高开发效率,减少开发周期,实现各种功能的快速开发。 ### 回答2: 在STM32 HAL下,wk2168 可以代表很多不同的含义,例如作为一个变量名、函数名或者别的标识符。在这种情况下,需要更多的背景信息才能给出一个具体的回答。 STM32是一款由STMicroelectronics(意法半导体)开发的32位单片机系列。HAL(Hardware Abstraction Layer)是STM32的一个软件库,用于提供对硬件抽象的支持。通过HAL库,开发人员可以简化底层硬件的配置和操作。 如果wk2168是作为一个变量名,它代表一个存储器中的数据。在STM32 HAL中,可以使用相关的HAL库函数来访问和操作这个变量,例如读取、写入或修改。 如果wk2168是作为一个函数名,它可能代表某个特定的功能。在STM32 HAL中,可以通过调用函数名为wk2168的函数来执行这个功能。需要查阅相关的HAL文档,以了解这个函数的具体用法和参数。 总的来说,STM32 HAL提供了一种简化STM32开发的方法,可以更加方便地配置硬件和进行软件开发。无论wk2168是代表变量名、函数名或其他标识符,在STM32 HAL下都可以通过相关的支持库来操作它。需要进一步的信息才能给出更加具体的回答。 ### 回答3: wk2168是一种STM32开发板,它基于STM32 HAL(硬件抽象层)开发环境。 STM32 HAL是STMicroelectronics为STM32系列微控制器提供的一种软件库。它提供了一套易于使用的API(应用程序接口),帮助开发人员更快地创建应用程序和驱动程序。HAL库包含了许多常用的功能,例如GPIO(通用输入/输出)、UART(通用异步收发器)、SPI(串行外围接口)和I2C(串行外围设备接口)等。 使用wk2168开发板,我们可以在STM32 HAL下进行开发。首先,我们需要将WK2168开发板与电脑连接,并安装好相应的开发环境,例如Keil MDK或者STM32CubeIDE。然后,我们可以通过HAL库提供的API来访问开发板上的各种外围设备,例如LED、按键、串口等。 例如,如果我们想要控制开发板上的一个LED灯,我们可以调用HAL_GPIO_WritePin()函数来设置LED的状态,使用HAL库提供的其他函数来配置GPIO引脚的工作模式和电平。 另外,使用STM32 HAL开发环境还可以轻松地开发其他各种功能。我们可以使用HAL库来实现定时器功能、中断处理、AD转换等各种应用。同时,HAL库还提供了一些便利的功能,例如时钟配置、DMA(直接内存访问)传输等。 总之,WK2168在STM32 HAL下为我们提供了一种便捷的开发环境。我们可以利用HAL库快速开发各种应用程序,并充分利用STM32系列微控制器的性能和功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

九世坛主

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

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

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

打赏作者

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

抵扣说明:

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

余额充值