IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> spi一主多从 调试记录 -> 正文阅读

[嵌入式]spi一主多从 调试记录

stm32l476主 stm8l152从

一、

stm32l476 上 rt-thread 注册spi1设备spi10

__HAL_RCC_GPIOB_CLK_ENABLE();
	rt_hw_spi_device_attach("spi1", "spi10", GPIOB, GPIO_PIN_10);//注册并设置片选引脚
/* 查 找 spi 设 备 获 取 设 备 句 柄 */
	spi_asr6505_dev0 = (struct rt_spi_device *)rt_device_find(ASR6505_DEVICE0);
	if (!spi_asr6505_dev0) {
		rt_kprintf("asr6505 sample run failed! can't find %s device!\n", ASR6505_DEVICE0);
		return -RT_ENOSYS;
	}
	
    {
        struct rt_spi_configuration cfg;
        cfg.data_width = 8;
        cfg.mode = RT_SPI_MASTER | RT_SPI_MODE_0 | RT_SPI_MSB; /* SPI Compatible Modes 0 */
        cfg.max_hz = 500 * 1000; /* SPI Interface with Clock Speeds Up to 20 MHz */
        rt_spi_configure(spi_asr6505_dev0, &cfg);
    }

线程调用 rt_spi_transfer? 发送接收数据

二、

stm8l152上初始化spi1 开接收中断

CLK_PeripheralClockConfig (CLK_Peripheral_SPI1,ENABLE);//开启SPI时钟
  GPIO_Init(GPIOB, GPIO_Pin_4, GPIO_Mode_In_PU_No_IT);
  GPIO_Init(GPIOB, GPIO_Pin_5, GPIO_Mode_In_PU_No_IT);
  GPIO_Init(GPIOB, GPIO_Pin_6, GPIO_Mode_In_PU_No_IT);
  GPIO_Init(GPIOB, GPIO_Pin_7, GPIO_Mode_Out_PP_High_Fast);
  SPI_DeInit(SPI1);
  SYSCFG_REMAPPinConfig(REMAP_Pin_SPI1PortF, ENABLE);
  SPI_Init(SPI1,SPI_FirstBit_MSB, SPI_BaudRatePrescaler_16, SPI_Mode_Slave,\
          SPI_CPOL_Low, SPI_CPHA_1Edge, \
          SPI_Direction_2Lines_FullDuplex, SPI_NSS_Hard, 0x07);
  SPI_ITConfig(SPI1, SPI_IT_RXNE, ENABLE);
  SPI_Cmd(SPI1,ENABLE);	/* 使能SPI */

中断中接收并发送数据?

if(SPI_GetITStatus(SPI1, SPI_IT_RXNE)){
    spi_slave_rx[spi_rx_count++] = SPI_ReceiveData(SPI1); 
    SPI_SendData(SPI1, spi_slave_tx[spi_tx_count++]);
  }

?三、

遇到的问题:主、从之间的时钟要设置相近;主机接收从机数据有误差;多从机分时跟主机通信

参考:

嵌入式】STM32实现SPI双机通信的一些细节(2)片选总结

STM32 HAL库SPI+DMA接收数据的配置和使用方法

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:31:24  更:2022-03-03 16:34:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:18:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码