登录发现更多内容
首页
分类
发帖
账号
自动登录
找回密码
密码
登录
立即注册
立即登录
立即注册
其他登录
QQ
微信
首页
Portal
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
产品教程
BBS
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
开发资料
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
样品购买
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
IoT云平台
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
GitHub
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
技术博客
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
搜索
搜索
热搜:
LoRa
ESP8266
安信可
本版
帖子
用户
请
登录
后使用快捷导航
没有账号?
立即注册
每日签到
任务
广播
导读
排行榜
设置
我的收藏
退出
13
0
0
首页
小安派&M61基本系统教程
›
【SPI】 M61与STM32f103双机通信
1
2
/ 2 页
下一页
返回列表
【SPI】 M61与STM32f103双机通信
[ 复制链接 ]
发布帖子
WildboarG
论坛元老
37
主题
256
回帖
7777
积分
论坛元老
论坛元老, 积分 7777, 距离下一级还需 9992222 积分
论坛元老, 积分 7777, 距离下一级还需 9992222 积分
积分
7777
私信
13人留言
楼主
小安派&M61基本系统教程
3177
13
2024-5-21 09:44:44
**最近在学习M61使用时候,没有找到SPI多机通讯相关的小白教程,刚好需要用到就和大家分享以下吧** ## 前提 * **不知道什么是spi参考timo这篇帖子**[**嵌入式通信协议-SPI**](%22[https://bbs.ai-thinker.com/forum.php?mod=viewthread&tid=44104&highlight=spi%22](https://bbs.ai-thinker.com/forum.php?mod=viewthread&tid=44104&highlight=spi%22)) * **查手册发现M61SU 只有一个SPI ,可自由配置为主模式或者从模式。**  * **默认spi0的gpio 初始化时候将CLK MISO MOSI CS都定义到指定引脚,当然可以自己手动定义到别的针脚(见手册)**  ## 目标 --- * **实现stm32与M61通过spi 实现双机/多机(一主多从)通信** * **STM32(从机) 实时进行adc采集,通过spi发送给M61(主机)** > **这里没有给出adc 实时采集代码,说一下原理,利用DMA设置双缓冲区,当ADC采集满一个缓冲区,切换到另一个缓冲区存放数据,此时CPU处于空闲,来进行SPI的数据发送。** ## 代码及说明 1. **导入相关库** ``` #include "bflb_mtimer.h" #include "board.h" #include "bflb_spi.h" #include "bflb_gpio.h" ``` 2. ** 定义收发缓冲区** ``` uint16_t tx_buff[3] = {0}; uint16_t rx_buff[3] = {0}; //数据宽度自定义我用到无符号16位了 ``` 3. **声明初始化** ``` struct bflb_device_s *spi0;//声明结构体指针spi0 struct bflb_device_s *gpio; //声明结构体指针gpio int main(void){ board_init(); //开发板初始化 board_spi0_gpio_init(); //spi0默认的gpio初始化 // io12 -- cs // io13 -- clk // io18 -- miso // io19 -- mosi struct bflb_spi_config_s spi_cfg ={ .freq = 100000, .role =SPI_ROLE_MASTER, // m61作为主机模式 .mode = SPI_MODE3, // 模式3 相位和极性都为1 .data_width = SPI_DATA_WIDTH_16BIT, //数据宽度我用16位 .bit_order = SPI_BIT_MSB, // 位顺序 .byte_order = SPI_BYTE_MSB, // 字节序 .tx_fifo_threshold = 0, .rx_fifo_threshold = 0, }; spi0 = bflb_device_get_by_name("spi0"); bflb_spi_init(spi0,&spi_cfg); // 初始化spi0 //bflb_spi_feature_control(spi0,SPI_CMD_SET_DATA_WIDTH,SPI_DATA_WIDTH_16BIT); // 下面这些都都可以不要,说明一下还要初始化gpio干嘛,由于我不知道STM32在DMA采集切换有空闲时间,所以让stm32选一个gpio作为标志位,通知M61可以进行片选 gpio = bflb_device_get_by_name("gpio");// gpio10 输入模式 获取电平状态 bflb_gpio_init(gpio, GPIO_PIN_10, GPIO_INPUT | GPIO_PULLUP); bflb_gpio_set(gpio,GPIO_PIN_10); // 设置为高电平 } ``` 4. **片选用串口打印数据** ``` while(1){ // 1. 判断从机是否可以片选 【定义GPIO为低电平可选】 // 2. 片选,发送数据,接收数据 // 3. 打印数据到串口 if(!bflb_gpio_read(gpio, GPIO_PIN_10)){ // bflb_gpio_reset(gpio, GPIO_PIN_12); // 片选(双机通讯可以不用手动设置/取消片选) for(uint8_t i=0;i<3;i++){ //这里可能会有人有疑惑,DMA才采集三个数据,速度很快的,CPU刚调度完就结束了,会不会没有时间将数据发送出来,事实上我的STM32ADC采集的缓冲区非常大的,我只是把最大值给发出来,这里三个数就是用了三个通道的找出最大值给发过来的。 rx_buff[i] = bflb_spi_poll_send(spi0,tx_buff[i]); //数据交换 } // bflb_gpio_set(gpio, GPIO_PIN_12); //取消片选 printf(":%d,%d,%d\r\n",rx_buff[0],rx_buff[1],rx_buff[2]); //打印出ADC 采集的数据 } else{ //printf("wait"); } } } ``` 5. **代码**  ## 效果 
点赞
0
收藏
0
淘帖
0
────
0
人觉得很赞
────
回复
使用道具
举报
13 回复
电梯直达
正序浏览
倒序浏览
正序浏览
沙发
WT_0213
回复
使用道具
举报
2024-5-21 09:47:58
回帖奖励
+1
金钱
真不错呢
回复
评论
使用道具
举报
板凳
爱笑
回复
使用道具
举报
2024-5-21 10:16:49
不错不错!
回复
评论
使用道具
举报
用心做好保姆工作
地板
lazy
回复
使用道具
举报
2024-5-21 10:19:45
赞
回复
评论
使用道具
举报
5
#
jkernet
回复
使用道具
举报
2024-5-21 10:23:34
学习了
回复
评论
使用道具
举报
6
#
爱笑
回复
使用道具
举报
2024-5-21 10:44:48
回复
评论
使用道具
举报
用心做好保姆工作
7
#
1084504793
回复
使用道具
举报
2024-5-21 10:47:32
赞
回复
评论
使用道具
举报
8
#
iiv
回复
使用道具
举报
2024-5-21 10:51:34
很棒!点个赞
回复
评论
使用道具
举报
9
#
bzhou830
回复
使用道具
举报
2024-5-21 10:56:05
好厉害。
回复
评论
使用道具
举报
选择去发光,而不是被照亮
10
#
lovzx
回复
使用道具
举报
2024-5-21 14:20:03
学习
回复
评论
使用道具
举报
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
立即登录
手机登录
点评
高级模式
本版积分规则
回帖并转播
回帖后跳转到最后一页
下一页 »
1
2
/ 2 页
下一页
今日推荐
求助——AiPi-PalChatV1通过UART-MCP控制梁山派(GD32)LED失败
星闪怎么下架了
【求助】D200连接官方烧录底板 烧录握手失败
基于AI-WB2实现MQTTS(MQTT-SSL)单向+双向加密传输
基于Ai-WB2实现使用MQTT完成订阅、发布及点灯功能
BW20-12F-KIT usbd_inic_dplus问题
基于Ai-WB2的HomeAssistant实现RGB彩灯控制功能
BU04 原理图
基于 Ai-WV01-32S+STM32移植 emMCP 实现 AI 语音控制点灯
AiPi-PalChatV1_“湾湾小何”提示音测试固件V2.9_UART-MCP
热帖排行
求助AI-WB2在AP模式下TCP/IP服务端模式透传发送要1024字节
问题:安信可科技WB2系列aipi-palchatv1官方代码烧录后模组无反
求助——AiPi-PalChatV1通过UART-MCP控制梁山派(GD32)LED失败
求助-BLE模块接收广播数据问题
[BW20] 5G信号强度问题提问
星闪怎么下架了
esp8266不能连接问题
Ai-WB2-01S烧录固件进度到100后失败,开机后无反应
统计信息
会员数: 30712 个
话题数: 44762 篇
首页
分类
我的