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 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 赛元单片机SC92F732x系列eeprom毒蝎操作[以7321为例] -> 正文阅读

[嵌入式]赛元单片机SC92F732x系列eeprom毒蝎操作[以7321为例]

目标:在0x0E区域写入0x20,在0x2E区域写入0x21,在0x4E区域写入0x22
先放效果图:
断电后,将写入程序删掉,再上电:
在这里插入图片描述
代码部分:
首先本代码依据赛元官方DEMO代码所作修改,官方地址:赛元芯片官方DEMO

main函数部分

#include "H/Function_Init.H"
#include "stdio.h"
/**************************************************************
说明:
1、Options for Target‘Target1’:BL51 Locate->Code Range:0x100,烧录选项请选择DISRST,复位脚作为普通IO使用;
2、改变TEST的定义,可以分别测试对应的功能;
3、注意:先在Function.H里面选择测试型号(SC92F7320无LCD/LED和PWM功能)
***************************************************************/
#define Test  5    //BTM:0 EXTI:1 Timer:2 LCD:3 PWM:4 Uart0:5 ADC:7 IAP:8 
extern uchar IapReadData;   //存放读取的IAP数据
void main(void)
{
	IO_Init();
	WDTCON |= 0x10;		    //清看门狗
	Uart0_Init();
	printf("Write Data:\r\n0x0E->0x20\r\n0x2E->0x21\r\n0x4E->0x22\r\n");
	IAPWrite(0x0E,0x20,IapEPPROM);
	IAPWrite(0x2E,0x21,IapEPPROM);
	IAPWrite(0x4E,0x22,IapEPPROM);
	printf("waiting...\r\n");
	IapReadData = IAPRead(0x0E,IapEPPROM);
	IAPADE = 0x00;       //IAP指针指回ROM区
	printf("Read 0x0E Data:%x\r\n",IapReadData);
	IapReadData = IAPRead(0x2E,IapEPPROM);
	IAPADE = 0x00;       //IAP指针指回ROM区
	printf("Read 0x2E Data:%x\r\n",IapReadData);
	IapReadData = IAPRead(0x4E,IapEPPROM);
	IAPADE = 0x00;       //IAP指针指回ROM区
	printf("Read 0x4E Data:%x\r\n",IapReadData);
	switch(Test)
	{
		case 0: BTM_Test();
		break;
		case 1: EXTI_Test();
		break;
		case 2: Timer_Test();
		break;
		case 3: LCD_Test();
		break;
		case 4: PWM_Test();
		break;
		case 5: //Uart0_Test();
		break;
		case 7: ADC_Test();
		break;
		case 8: //IAP_Test(0x1fff,IapROM);   //操作ROM,对地址0x1fff进行读写测试
		        //IAP_Test(0x7f,IapEPPROM);   //操作EPPROM,对地址0x7f进行读写测试
		break;
		default:
		break;
	}
}

IAP_INIT部分:

#include "H/Function_Init.H"

//#define IapROM  0x00	  //0x00:选择ROM区操作  0x02:选择EEPROM区操作
//#define IapEPPROM  0x02	  //0x00:选择ROM区操作  0x02:选择EEPROM区操作
unsigned char code *IapAddr = 0x00;

void IAPWrite(uint Addr,uchar Value,uchar IAPArea);
uchar IAPRead(uint Addr,uchar IAPArea);
uchar IapReadData = 0x00;   //存放读取的IAP数据

/*****************************************************
*函数名称:void IAP_Test(uchar Address,uchar IAPArea)
*函数功能:IAP测试
*入口参数:Address,IAPArea
*出口参数:void
*****************************************************/
void IAP_Test(uint Address,uchar IAPArea)
{
	IAPWrite(Address,0xff,IAPArea);
	IapReadData = IAPRead(Address,IAPArea);
	IAPADE = 0x00;       //IAP指针指回ROM区
	while(1)
	{
		if(IapReadData == 0xff)
		{
			P20 = ~P20;
		}
		else
		{
			P21 = ~P21;
		}
	}
}

/*****************************************************
*函数名称:void IAPWrite(uchar Addr,uchar Value,uchar IAPArea)
*函数功能:IAP写初始化
*入口参数:Addr,Value,IAPArea
*出口参数:void
*****************************************************/
//IAP写操作
void IAPWrite(uint Addr,uchar Value,uchar IAPArea)
{	
	EA = 0;
	IAPDAT = Value;      //写入数据Data
	IAPADH = ((Addr>>8)&0X7F);   //写入地址的高5位
	IAPADL = Addr;               //写入地址的低8位
	
	IAPADE = IAPArea;  //IAPArea=0x00:选择ROM区操作  IAPArea=0x02:选择EEPROM区操作
	IAPKEY = 240;		   //IAP开启保护控制时间
	IAPCTL = 0x06;     //CPU hold time为2ms,写入操作命令
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	IAPADE = 0x00;      //MOVC指向ROM
	EA = 1;
}
/*****************************************************
*函数名称:uchar IAPRead(uchar Addr,uchar IAPArea)
*函数功能:IAP读初始化
*入口参数:Addr,IAPArea
*出口参数:ReadValue
*****************************************************/
uchar IAPRead(uint Addr,uchar IAPArea)
{
	uchar ReadValue = 0x00;
	EA = 0;
	IAPADE = IAPArea;
	ReadValue = *(IapAddr+Addr); //读取的数据
	IAPADE = 0x00;               //MOVC指向ROM
	EA = 1;
	return ReadValue;
}

function_INIT部分:

#ifndef _Function_Init_H_
#define _Function_Init_H_

#include "SC92F732x_C.H"
#include "intrins.H"
#define uchar unsigned char
#define uint unsigned int

#define IapROM  0x00	  //0x00:选择ROM区操作  0x02:选择EEPROM区操作
#define IapEPPROM  0x02	  //0x00:选择ROM区操作  0x02:选择EEPROM区操作

extern void IO_Init(void);
extern void BTM_Test(void);
extern void EXTI_Test(void);
extern void Timer_Test(void);
extern void LCD_Test(void);
extern void PWM_Test(void);
extern void ADC_Test(void);
extern void IAP_Test(uint Address,uchar IAPArea);

void Uart0_Init(void);
void UartSendBit(unsigned char c);

void IAPWrite(uint Addr,uchar Value,uchar IAPArea);
uchar IAPRead(uint Addr,uchar IAPArea);

/*****************************************
说明:选择测试IC
*****************************************/
#define SC92F7323  0
#define SC92F7322  1
#define SC92F7321  2
#define SC92F7320  3

#define IC_MODEL  SC92F7321

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

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 15:24:44-

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