stm32f407操作Flash-1(读取Flash的设备ID)

这里先解释一下Flash类似闪存,和EEPROM一样,掉电不易失

第一步:看电路原理图得出:
在这里插入图片描述
第二步:配置CubeMX
注意:PH2引脚没有NSS片选功能,我们使用它的输出功能就好
在这里插入图片描述
第三补:看Flash的数据手册:
在这里插入图片描述
在这里插入图片描述
时序分析:
片选信号使能后,主机发送0x90代表主机要获取Flash的制造商ID和设备ID了
再发送24bit的地址0
读取的时候就可以调用HAL库读取设备ID了
制造商ID是固定的:0xef,设备ID和设备有关
下面上代码:

/*********读写一个字节*******/

extern SPI_HandleTypeDef hspi1;
uint8_t sFLASH_SendByte(uint8_t byte)
{
	uint8_t SEND_DATA = byte;
	uint8_t RECV_DATA = 0;
	HAL_SPI_TransmitReceive(&hspi1,&SEND_DATA,&RECV_DATA,1,0);
	return RECV_DATA;
}
/*读取设备制造商的ID*/
uint16_t sFLASH_ReadID(void)
{
	/*选中外设芯片,这是SPI协议的片选信号使能的操作*/
	sFLASH_CS_LOW();
	/*发送制造商ID的指令*/
	sFLASH_SendByte(W25X_ManufactDeviceID);//0x90
	
	/*发送24bit地址,一次8bit,发送三次*/
	sFLASH_SendByte(sFLASH_DUMMY_BYTE); // 0x00
	sFLASH_SendByte(sFLASH_DUMMY_BYTE);
	sFLASH_SendByte(sFLASH_DUMMY_BYTE);
	
	uint16_t RECV_ID = 0;
	/*读取第一个ID*/
	RECV_ID = sFLASH_SendByte(sFLASH_DUMMY_BYTE);	
	//printf("ID 1 = %x\n",RECV_ID);//0xef
	/*读取第二个ID*/
	RECV_ID =RECV_ID << 8 | sFLASH_SendByte(sFLASH_DUMMY_BYTE) ;
	/*放弃片选*/
	sFLASH_CS_HIGH();
	return RECV_ID;
	
}
main:
 /* USER CODE BEGIN 2 */
	printf("usart init ok\n");
  /* USER CODE END 2 */
	
	uint16_t DEVICE_ID = 0;
	DEVICE_ID = sFLASH_ReadID();
	printf("DEVICE ID = 0x%x\n",DEVICE_ID);

最后上才艺,展示结果嘻嘻
在这里插入图片描述
在这里插入图片描述
与数据手册所给结果完全一致!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F407是一款高性能的微控制器芯片,具有丰富的外设资源和强大的处理能力。CANopen是一种基于CAN总线的通信协议,通常用于在工业领域中实现分布式控制系统。 将STM32F407配置为CANopen从站可以实现与其他CANopen节点之间的通信。在将STM32F407配置为CANopen从站之前,我们需要先了解CANopen的协议和通信规则。 配置STM32F407为CANopen从站主要包括以下步骤: 1. 初始化CAN总线:配置CAN模块的工作模式、波特率等参数,使其能够正常工作。 2. 配置从站节点ID:每个CANopen节点都有一个唯一的节点ID,该ID用于在CAN总线上进行节点之间的识别和通信。 3. 实现从站对象字典:从站对象字典是CANopen协议中的核心,它用于存储和访问从站的输入和输出数据。开发者需要根据应用需求,在STM32F407Flash或RAM中实现对象字典。 4. 实现从站状态机:从站状态机用于处理来自主站的请求和数据,并根据协议规定的状态转换规则执行相应的操作。 5. 实现PDO通信:PDO是CANopen协议中用于实现实时数据传输的一种机制。开发者需要根据应用需求,配置和实现PDO通信。 6. 实现SDO通信:SDO是CANopen协议中用于配置和管理从站对象字典的一种机制。开发者需要根据应用需求,配置和实现SDO通信。 配置完成后,STM32F407作为CANopen从站就可以与其他CANopen节点进行通信。可以通过主站发送PDO或SDO消息来读取和写入从站对象字典中的数据,也可以根据应用需求,自行发送PDO消息给其他节点。 总的来说,将STM32F407配置为CANopen从站需要进行硬件和软件上的配置,并实现从站对象字典、状态机以及PDO和SDO通信等功能,以实现与其他CANopen节点的通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值