快捷导航

SPIne代码框架

G_lk 发表于 2019-11-13 18:47:28 | 显示全部楼层 |阅读模式 [复制链接]
0 125
为了满足实时性和稳定性的要求,作者选择了CAN作为姿态控制上位机和12个执行器之间的通信接口。由于姿态控制上位机选用的Upboard没有CAN接口,所以选择用高速的SPI接口扩展出4路(对应每条腿一路)CAN接口。
因此作者设计了SPIne板,板上使用了2片STM32F446RET6(因为一片芯片只有2个CAN口),扩展出4路CAN接口。

在SPIne板代码整体分为4部分:  SPI硬件数据接收任务(红框1),SPI数据处理函数(红框2),CAN数据发送任务(红框3),CAN数据接收任务(红框4)。

1:在主函数中,每隔10us读取一个电机的数据(红框4),读取的数据存储在legX中,等待通过SPI口发送到上位机;
2:上位机主动向SPI发送控制命令(红框1),因为SPI是双工通信,上位机发送数据的同时,也从SPI接收数据(CAN口上次收集到的数据)。
3:SPI接收到完整数据包后,触发(spi_csx下降沿)SPI数据处理函数(红框2),将从SPI收到的命令分别通过can1,can2口发送给相应的执行器;同时将CAN口当前收集到的执行器数据复制到SPI_data中,等待下次SPI通信时, 将数据传递给上位机。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 回复
  • 转播
  • 评分
  • 分享

最新活动

  • 体验固件
  • 正式固件

排行榜

新品速递

新人课堂

  • 社区微博
  • 官方微信
扫码关注微信公众平台
本站由 大糖网 提供技术支持  Powered by Discuz!©2011-2015 优宝特四足机器人论坛 | 京ICP备12031756号©
快速回复 返回顶部 返回列表