stm32cube,hal库来实现PS2手柄数据发送

stm32cube,hal库来实现PS2手柄数据发送

很久前买了个PS2的手柄,如下,之前在这里插入图片描述
以前不会使用cube来配置工程,导致写程序很麻烦,对我这样的新手很不友好,看卖家提供的程序也很麻烦,拉高拉低的。现在接触了cube,决定用cube库来实现下,这样添加或者更改配置也方便。

1.cube配置

我使用的是STM32F103C8芯片,需要配置SPI,引脚随意,默认或者自己改都行,spi配置如下在这里插入图片描述
8位数据,LSB低位在前,分频依据时钟定,主要是波特率250k bits/s,时钟极性高,就是说平时是高,时钟相位是1edg,说明在下降沿发送,检验DISABLE,NSS选择软件方式。然后自己选择了一个GOIP口,功能为GPIO_OUTPUT,这个连接ps2的CS脚。在这里插入图片描述
在这里插入图片描述

连线

配置的GPIO——output连接ps2的CS,MOS连接CMD,MISO连接DATA,时钟连时钟,上电

写程序

在这里插入图片描述
我就不放源码了,就两句话,简单的很,核心就是先拉低CS脚,发送一个0x01,等1ms,然后发送0x42,并且接收data[1],就是手柄的ID(绿灯模式是0x41),然后再发送接收,根据接收到的数据判断哪一位按下(按下为0,否则为1)。具体的时序网上有,也可以看下图在这里插入图片描述

总结

其实用HAL库很简单的SPI发送接收就完成了,之前调试了一天卡住我的地方就是它需要延时,需要反应时间,加入一个延时后,SPI才能接收到正确的数。主函数里调用时,也不能过于频繁,100ms一次没有问题。
附注:之前在网上看如何使用AC6编译器的时候感觉步骤好多,但是下载新的包,更新软件后,直接就能使用了,什么都不用改,不知道为什么。

  • 6
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值