硬汉嵌入式论坛

 找回密码
 立即注册
查看: 643|回复: 6
收起左侧

[SPI/QSPI] 通过SPI读写铁电FRAM(通过mikroBUS)

[复制链接]

1

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2023-8-1 07:46:27 | 显示全部楼层 |阅读模式
大家好! 我是一个单片机新人。。

现在我想通过mikroBUS连接FRAM 2 click这个铁电, 然后在通过Arduino REV3的接口连mikroBUS在STM32H7xx的板子上,不知道有没有大神有相关经验。
我唯一比较困惑的点是, 我能否只通过STM32的HAL操控SPI来对对应接口进行读写操作?因为我理解如果各个模块的pin被正确连接起来了,那么我往STM32的SPI引脚发信号最终会传到FRAM的SPI引脚上,来达成读写。
还是说因为我中间有一个mikroBUS作为桥接,必须初始化这个桥接模块和FRAM模块才行?
感谢!!!!!!!

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106731
QQ
发表于 2023-8-1 11:40:33 | 显示全部楼层
没问题,推荐直接通过STM32H7的SPI接口直接控制FRAM。mikroBUS应该是一种接口方式吧,可以不用管。直接SPI接口控制更方便。


回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2023-8-1 15:32:22 来自手机 | 显示全部楼层
eric2013 发表于 2023-8-1 11:40
没问题,推荐直接通过STM32H7的SPI接口直接控制FRAM。mikroBUS应该是一种接口方式吧,可以不用管。直接SPI ...

感谢回答!应该是可以就把mikrobus当作连接的线?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106731
QQ
发表于 2023-8-1 17:16:53 | 显示全部楼层
ssslvky 发表于 2023-8-1 15:32
感谢回答!应该是可以就把mikrobus当作连接的线?

我认为可以的。
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2023-8-1 19:17:01 来自手机 | 显示全部楼层
eric2013 发表于 2023-8-1 17:16
我认为可以的。

嗯嗯 谢谢我先试试读deviceid
回复

使用道具 举报

1

主题

70

回帖

73

积分

初级会员

积分
73
发表于 2023-8-3 10:21:11 | 显示全部楼层
我以为是microUSB写错成mikroBUS了呢
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2023-9-14 00:19:21 | 显示全部楼层
您好 我现在用spi去读FRAM,但是总是读出来是0.我通过示波器看SCK MISO CS应该都是对的 但是就是MOSI一直有问题 能帮忙看一下为什么嘛?
这是我的控制代码:
/*
* spi_fram.c
*
*  Created on: Sep 12, 2023
*      Author: 11986
*/

#include "spi_fram.h"
uint8_t spi1_read_write_byte(uint8_t data)
{
    uint8_t rec_data = 0;
    HAL_SPI_TransmitReceive(&hspi1, &data, &rec_data, 1, 1000);  //spi读写数据函数,参数2存放用来发送的数据,参数3存放用来接收的数据

    return rec_data;
}

static void FRAM_send_address(uint32_t address)  /*address: 0x00 ~ 0x7FFFF */
{
        spi1_read_write_byte((uint8_t)((address)>>16));     /* send bit23 ~ bit16  */
        spi1_read_write_byte((uint8_t)((address)>>8));      /* send bit15 ~ bit8  */
        spi1_read_write_byte((uint8_t)address);             /* send bit7  ~ bit0  */
}

uint16_t FramReadID(){
//        uint8_t cmd = RDID;
//        uint8_t idReg[8]={0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F};
//        uint8_t i,errors;
//        uint8_t idregFactory[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
//        HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, GPIO_PIN_RESET);
//        HAL_SPI_Transmit(&hspi1, &cmd, 1, 1000);
//        HAL_SPI_Receive(&hspi1, idReg, 8, 1000);
//        HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, GPIO_PIN_SET);
//        errors = 0;
//        for (i=0;i<8;i++){
//                if(idReg[i]!=idregFactory[i]) errors++;
//        }
//        return errors;
        uint16_t deviceid;
        HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, GPIO_PIN_RESET);
        spi1_read_write_byte(RDID);   /* 发送读取 ID 命令 */
        deviceid = spi1_read_write_byte(0xFF) << 8;     /* Read high 8 bit  */
        //deviceid |= spi1_read_write_byte(0xFF);         /* Read low 8 bit */
        HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, GPIO_PIN_SET);
        return deviceid;
}


void FramInit(void)
{
    spi1_read_write_byte(0xFF); /* Write 0xFF to DR */
    HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, GPIO_PIN_SET);
}
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-2 22:50 , Processed in 0.269510 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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