【CC2530-操作外部flash】

zigbee cc2530操作flash,以cc2530读flash_id为例子;

void InitIO()
{CLKCONCMD &= ~0x40;         //设置系统时钟源为32MHZ晶振 while(CLKCONSTA & 0x40);    //等待晶振稳定为32M CLKCONCMD &= ~0x47;         //设置系统主时钟频率为32MHZ     UartInitial();// CS P1_3P1DIR |= 1<<3;P1INP |= 1<<3;P1SEL &= ~(1<<3);// IC_SCK  P1_5P1DIR |= 1<<5;P1INP |= 1<<5;P1SEL &= ~(1<<5);// IC_MOSI P1_6P1DIR |= 1<<6;P1INP |= 1<<6;P1SEL &= ~(1<<6);// IC_MISO P1_7P1DIR |= 1<<7;P1INP |= 1<<7;P1SEL &= ~(1<<7);  P1DIR |= 1<<2;P1INP |= 1<<2;P1SEL &= ~(1<<2);  SPI_CS = 1;SPI_SCK = 1;
}

操作写一个字节数据

/************************************************
函数名称 : Write_SPI_Byte
功    能 : SPI写读一个字节
参    数 : Byte ---- 数据
返 回 值 : Byte ---- 数据
*************************************************/
uint8_t Write_SPI_Byte( uint8_t Byte )
{uint8_t i;SPI_SCK = 1;for(i = 0;i < 8;i++){SPI_SCK = 0;Delay_1us(WAIT_TIME);       // 空等待#if 0SPI_MOSI = ((Byte & 0x80) >> 7);#elseif(Byte & 0x80){SPI_MOSI = 1;}else{SPI_MOSI = 0;}#endifByte <<= 1;Delay_1us(WAIT_TIME);       // 空等待SPI_SCK = 1;Delay_1us(WAIT_TIME);       // 空等待//Byte |= SPI_MISO;}return Byte;
}

操作读flash数据

/************************************************
函数名称 : Read_SPI_Byte
功    能 : SPI只读一个字节
参    数 : 无
返 回 值 : temp ---- 数据
*************************************************/
uint8_t Read_SPI_Byte(void)
{uint8_t i;uint8_t temp = 0;SPI_SCK = 1;for(i = 0;i < 8;i++){SPI_SCK = 0;Delay_1us(WAIT_TIME);       // 空等待temp <<= 1;#if 1temp |= SPI_MISO;#elseif(SPI_MISO){temp++;}#endifSPI_SCK = 1;Delay_1us(WAIT_TIME);       // 空等待}return temp;
}

测试以读取flash_id为例子,需要写0x90然后读两个字节

uint16_t read_flash_id(uint8_t command)
{uint16_t id = 0;uint8_t data[2] = {0};SPI_CS = 1;SPI_CS = 0;Write_SPI_Byte(command);Write_SPI_Byte(0xFF);Write_SPI_Byte(0xFF);    Write_SPI_Byte(0x00);for(int i = 0; i < 2 ; i++){data[i] = Read_SPI_Byte();//data++;}SPI_CS = 1;return data[0] >> 8 + data[1];
}

然后读指令我门用刚才提到的0x90:

void main()
{InitIO();Delay_1s(1);SPI_CS = 0;read_flash_id(0x90);
}

最后通过逻辑分析仪抓取flash接口可以看到操作ok!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/846583.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试(五)

目录 1. 知道大顶堆小顶端吗&#xff0c;代码怎么区分大顶端小顶端 2. 计算机中栈地址与内存地址增长方向相反吗&#xff1f; 3. %p和%d输出指针地址 4. 为什么定义第二个变量时候&#xff0c;地址反而减了 5. 12&#xff0c;32&#xff0c;64位中数据的占字节&#xff1f;…

物质的量质量,它们可不是一个概念

物质的量&质量&#xff0c;它们可不是一个概念。 物质的量&质量 乍一听物质的量&#xff0c;还以为是和质量有什么关系&#xff0c;是不是&#xff1f;其实物质的量和质量没什么直接的联系。 物质的量是国际单位制中7个基本物理量之一&#xff0c;其符号为n&#xf…

Aras Innovator-Team(群组)的使用方法

当Aras Innovator在处理权限时&#xff0c;在不使用Team的情况下&#xff0c;系统的权限配置可以满足大部分业务场景&#xff0c;如&#xff1a;常见的按照组织架构&#xff0c;成员和角色分配权限&#xff0c;按照生命周期分配权限等。 如果遇到比较复杂的权限需求&#xff0c…

AltiumDesigner/AD添加数据库连接

1.首先确保本机电脑有无对应的数据库驱动&#xff0c;例如我这边要添加MySQL的数据&#xff0c;则需要首先下载MySQL数据驱动&#xff1a;MySQL :: Download MySQL Connector/ODBC (Archived Versions) 2.运行“odbcad32.exe”&#xff0c;如下图添加对应的数据库配置&#xf…

【C/C++】C/C++车辆交通违章管理系统(源码+数据文件)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

面试题:useEffect的Clean Up 什么时候触发?

​ useEffect作为做常用的Hook&#xff0c;以下三个知识点你有必要了解下~ 防止写出奇怪的代码祸害队友&#xff0c;而我不幸就是这个受害者&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; useEffect的依赖项为空 useEffect的dependencyList作为一个可选参数…

Pytest框架中用例用例执行常用参数介绍

pytest 支持通过命令行参数来定制测试运行的方式。以下是一些常用的 pytest 执行参数介绍。 学习目录 -q 或 --quiet: 安静模式&#xff0c;只显示进度和摘要 -s : 选项允许在测试的输出中捕获 stdout 和 stderr。 -v : 选项会使 pytest 的输出更加详细。 -k &#xff1a;…

Git 恢复已删除的branch

六一节晚上改了点code, 做完之后commit, 然后误删了这个branch, 并且新建了branch. 那么怎样恢复已删除的branch呢&#xff1f; 网上查询一番&#xff0c;找到了答案&#xff1a; 1. git reflog 找到被删的branch中最后一笔commit, 记录它的SHA1。 怎么看SHA1是被删除的bra…

鸿蒙应用Stage模型【应用/组件级配置】

应用/组件级配置 在开发应用时&#xff0c;需要配置应用的一些标签&#xff0c;例如应用的包名、图标等标识特征的属性。本文描述了在开发应用需要配置的一些关键标签。 应用包名配置 应用需要在工程的AppScope目录下的[app.json5配置文件]中配置bundleName标签&#xff0c;…

Python PyInstaller打包方法介绍

为了将开发好的Python工具交付给其他人使用&#xff0c;除了在目标电脑部署Python编译环境以外&#xff0c;我们还可以将它打包成可执行文件&#xff0c;这样目标电脑不需要安装Python环境就可以运行。将Python程序打包成可执行文件的方法有多种&#xff0c;比如Nuitka、PyInst…

微博增强-tampermonkey脚本实现网页管理悄悄关注

不是很明白微博为什么不出个x的列表功能&#xff0c;毕竟现在信息洪流&#xff0c;有些东西只是要看要了解&#xff0c;但不希望天天在首页轰炸眼睛&#xff0c;扰乱心智。 这个tampermonkey脚本适配了pc web和手机pwa版本&#xff08;weibo.com/m.weibo.cn&#xff09;,解决了…

golang map部分原理源码个人走读-附个人理解过程图解

近期再写map的demo时出现了下面一段报错&#xff0c;于是带着疑惑去看了一下源码 目的&#xff1a;主要想知道为啥map不让并发读写 fatal error: concurrent map read and map write 一.map的数据结构 先有个印象&#xff0c;后续会详细介绍 // A header for a Go map. ty…

NDIS Filter开发-OID 请求

NDIS 定义对象标识符 (OID) 值来标识适配器参数&#xff0c;其中包括操作参数&#xff0c;例如设备特征、可配置的设置和统计信息。 Filter驱动程序可以查询或设置基础驱动程序的操作参数&#xff0c;或过滤/覆盖顶层驱动程序的 OID 请求。 NDIS 还为 NDIS 6.1 及更高版本的Fi…

Informer

I n f o r m e r Informer Informer 摘要&#xff1a; 长序列时间序列的预测 i n f o r m e r informer informer优点&#xff1a; P r o b s p a r e Probspare Probspare自关注机制&#xff0c;在时间复杂度和内存使用方面达到 O ( N l o g N ) O(NlogN) O(NlogN),在序列依…

IP协议1.0

基本概念&#xff1a; • 主机: 配有IP地址, 但是不进⾏路由控制的设备; • 路由器: 即配有IP地址, ⼜能进⾏路由控制; • 节点: 主机和路由器的统称; IP协议的报头 • 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4. • 4位头部⻓度(header length): IP头部的⻓…

mybatis增删改查模板设置及设置调用

mybatis增删改查模板设置 系统配置文件完成以及连接好数据之后&#xff0c;就可以用这个mybatis了&#xff0c;首先写这个数据库的增删改查模板StashMapper.xml&#xff0c;这个东西是要放在DAO层中的奥&#xff0c;切记。 1.编写mybatis对应数据库的增删改查模板 在我的Sta…

DKTCDR:Domain-Oriented Knowledge Transfer for Cross-Domain Recommendation

Domain-Oriented Knowledge Transfer for Cross-Domain Recommendation IEEE(CCF B.SCI 1)-Guoshuai Zhao, Xiaolong Zhang, Hao Tang, Jialie Shen, and Xueming Qian-2024 思路 在CDR中,构建连接两个域的桥梁是实现跨域推荐的基础。然而现在的CDR方法往往在连接两个域时忽…

软件测试进阶

目录 一、自动化测试 1.概念 2.Selenium 2.1 概念 2.1.1 Selenium是什么&#xff1f; 2.1.2 Selenium特点 2.1.3 工作原理 2.2 SeleniumJava环境搭配 2.3 定位元素 2.3.1 CSS语法 2.3.2 XPath语法 2.4 应用 2.4.1 点击提交文本 2.4.2 模拟输入 2.4.3 清除文本 2…

统信UOS桌面操作系统1070上使用notepad--文本编辑器

原文链接&#xff1a;统信UOS桌面操作系统1070上使用notepad–文本编辑器 Hello&#xff0c;大家好啊&#xff01;今天我要向大家推荐一款在统信UOS桌面操作系统1070上非常好用的文本编辑器软件——“notepad–”。这款软件功能强大、操作简便&#xff0c;特别适合开发人员和日…

车载软件架构 - AUTOSAR 的信息安全框架

车载软件架构 - AUTOSAR 的信息安全架构 我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗…