数码之家

 找回密码
 立即注册
搜索
查看: 847|回复: 3

[STM] STM 32读取FM16W08 数据的例子

[复制链接]
发表于 2024-11-20 09:26:43 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

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

x

供参考学习。

#include "stm32fxxx_hal.h"

// 初始化SPI
void MX_SPI1_Init(void) {
  hspi1.Instance = SPI1;
  hspi1.Init.Mode = SPI_MODE_MASTER;
  hspi1.Init.Direction = SPI_DIRECTION_2LINES;
  hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
  hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
  hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
  hspi1.Init.NSS = SPI_NSS_SOFT;
  hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;
  hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
  hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
  hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  hspi1.Init.CRCPolynomial = 7;
  if (HAL_SPI_Init(&hspi1) != HAL_OK) {
    Error_Handler();
  }
}

// FM16W08的读取函数
uint8_t Read_FM16W08(uint8_t address) {
  uint8_t data;
  HAL_GPIO_WritePin(FM16W08_CS_GPIO_Port, FM16W08_CS_Pin, GPIO_PIN_RESET); // 拉低CS引脚
  HAL_SPI_Transmit(&hspi1, &address, 1, 1000); // 发送读取指令
  HAL_SPI_Receive(&hspi1, &data, 1, 1000); // 接收数据
  HAL_GPIO_WritePin(FM16W08_CS_GPIO_Port, FM16W08_CS_Pin, GPIO_PIN_SET); // 拉高CS引脚
  return data;
}

int main(void) {
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_SPI1_Init();

  while (1) {
    uint8_t data = Read_FM16W08(0x00); // 读取FM16W08的0地址处的数据
    // 处理读取到的数据
  }
}

发表于 2024-11-21 22:22:00 | 显示全部楼层
不错不错。给楼主点赞。
不过友情提醒一下,代码可以放到 [code] [/code]中间,看起来就更好一些
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-11-22 08:38:28 | 显示全部楼层
文坛老炮儿 发表于 2024-11-21 22:22
不错不错。给楼主点赞。
不过友情提醒一下,代码可以放到 中间,看起来就更好一些 ...

谢谢提醒,我试试

  1. void main(){


  2. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2024-12-5 11:19:03 | 显示全部楼层
是铁电的存储器嘛
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-2 01:16 , Processed in 0.218401 second(s), 11 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表