DSP280049C初学(5)-基于IIC的FM24CL16B存储器的使用

DSP280049C初学(5)-基于IIC的FM24CL16B存储器的使用

实现目的:
DSP280049C芯片能够通过IIC通讯实现写入和读取FM24CL16B存储器,其中本文参考了文章TMS320F280049 I2C IIC 相对于库函数操作CAT24C02 中文。

1.userIIC.h头文件配置

#ifndef USER_INC_USERIIC_H_
#define USER_INC_USERIIC_H_#include "stdint.h"void userIIC_int(void);
void Write_bit_F24(uint16_t ADDR,uint16_t Data);
uint8_t Read_bit_F24(uint16_t ADDR);

2.userIIC.c源文件配置


#include "F28x_Project.h"
#include "driverlib.h"
#include "device.h"
#include "IQmathLib.h"
#include "userIIC.h"
#include "userSPI.h"#define Delay_MinTime               5*1000
//  I2C PIN
#define SLAVE_ADDRESS               0x50
//初始化
void userIIC_int(void)
{//IO初始化GPIO_setDirectionMode(DEVICE_GPIO_PIN_SDAA, GPIO_DIR_MODE_OUT);//GPIO_DIR_MODE_INGPIO_setPadConfig(DEVICE_GPIO_PIN_SDAA, GPIO_PIN_TYPE_STD);//GPIO_PIN_TYPE_PULLUPGPIO_setQualificationMode(DEVICE_GPIO_PIN_SDAA, GPIO_QUAL_ASYNC);GPIO_setDirectionMode(DEVICE_GPIO_PIN_SCLA, GPIO_DIR_MODE_OUT);//GPIO_DIR_MODE_INGPIO_setPadConfig(DEVICE_GPIO_PIN_SCLA, GPIO_PIN_TYPE_STD);//GPIO_PIN_TYPE_PULLUPGPIO_setQualificationMode(DEVICE_GPIO_PIN_SCLA, GPIO_QUAL_ASYNC);GPIO_setPinConfig(DEVICE_GPIO_CFG_SDAA);GPIO_setPinConfig(DEVICE_GPIO_CFG_SCLA);//I2C模块初始化I2C_disableModule(I2CA_BASE);I2C_initMaster(I2CA_BASE, DEVICE_SYSCLK_FREQ, 100000, I2C_DUTYCYCLE_50);I2C_setBitCount(I2CA_BASE, I2C_BITCOUNT_8);I2C_setSlaveAddress(I2CA_BASE, SLAVE_ADDRESS);I2C_setConfig(I2CA_BASE, I2C_MASTER_SEND_MODE);I2C_setEmulationMode(I2CA_BASE, I2C_EMULATION_FREE_RUN);//中断源为:检测到停止位,寄存器访问准备就绪I2C_enableInterrupt(I2CA_BASE, I2C_INT_STOP_CONDITION | I2C_INT_REG_ACCESS_RDY);I2C_enableFIFO(I2CA_BASE);I2C_clearInterruptStatus(I2CA_BASE, I2C_INT_RXFF | I2C_INT_TXFF);I2C_enableModule(I2CA_BASE);}/** F24CL16:16Kbit的存储器,能够存储16*1024/8=2048个uint8类型的数据* function:向目标地址写入一个字节的数据* parameter-ADDR:地址位,范围为0-2047* parameter-Data:数据位,该地址为的数据大小,uint8类型,取值范围为0-255*/
void Write_bit_F24(uint16_t ADDR,uint16_t Data)
{I2C_setDataCount(I2CA_BASE,2);I2C_putData(I2CA_BASE, ADDR);//发送需要写入的地址I2C_putData(I2CA_BASE, Data);//发送需要写入的数据I2C_setConfig(I2CA_BASE, I2C_MASTER_SEND_MODE);//设置为发送模式I2C_sendStartCondition(I2CA_BASE);//发送起始信号,并将刚刚配置的信息发送出I2C_sendStopCondition(I2CA_BASE);//发送终止信号DEVICE_DELAY_US(Delay_MinTime);SPIB_sendtwo(ADDR,Read_bit_F24(ADDR));
}/** F24CL16:16Kbit的存储器,能够存储16*1024/8=2048个uint8类型的数据* function:读取目标地址的数值* parameter-ADDR:地址位,范围为0-2047*/
uint8_t Read_bit_F24(uint16_t ADDR)
{uint16_t Data;I2C_setDataCount(I2CA_BASE,1);I2C_putData(I2CA_BASE, ADDR);//发送地址信息I2C_setConfig(I2CA_BASE, I2C_MASTER_SEND_MODE);//配置为发送模式I2C_sendStartCondition(I2CA_BASE);//发送起始信号DEVICE_DELAY_US(Delay_MinTime);I2C_setConfig(I2CA_BASE, I2C_MASTER_RECEIVE_MODE);//配置为接收模式I2C_sendStartCondition(I2CA_BASE);//发送起始信号DEVICE_DELAY_US(Delay_MinTime);Data = I2C_getData(I2CA_BASE);//读取数据I2C_sendNACK(I2CA_BASE);//发送NACKI2C_sendStopCondition(I2CA_BASE);//发送停止信号DEVICE_DELAY_US(Delay_MinTime);return Data;
}

3.main.c主函数文件配置

#include "F28x_Project.h"
#include "driverlib.h"
#include "device.h"
#include "IQmathLib.h"
#include "userGPIO.h"
#include "userSCI.h"
#include "userSPI.h"
#include "userPWM.h"
#include "userADC.h"
#include "userIIC.h"
#include "stddef.h"void main(void)
{Device_init();Device_initGPIO();DINT;Interrupt_initModule();Interrupt_initVectorTable();IER = 0x0000;IFR = 0x0000;DELAY_US(1000L);userGPIO_int ();userSCIA_int ();userIIC_int ();SPIB_int ();
//    EPWM1_int();ADC_int();EINT;ERTM;while (1){Write_bit_F24(2000,255);Write_bit_F24(123,123);
//        SCIA_sendtwo(_IQtoF(a),_IQtoF(b));
//        SPIB_sendtwo(0,Read_bit_F24(2000));DELAY_US(1000000L);}
}

4.实现过程与结果

userIIC.c源文件配置中,写入函数的末尾加入了通过SPI向外打印数据函数,将写入函数中的地址和写入数据打印出来,运行结果如下图:
在这里插入图片描述

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

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

相关文章

confluence 备份与恢复

备份 confluence 每天会自动备份文件到 /var/atlassian/application-data/confluence/backups 新增定时任务,每天将备份的文件拷贝到远程服务器: crontab -l 0 0 3 * * ? sh /var/atlassian/application-data/confluence/backups/backup.sh#!/bin/shscp_linux_pa…

淘宝获得商品详情 API:电商平台的智能化数据源

一、引言 随着互联网技术的快速发展,电子商务在全球范围内得到了广泛的应用。作为中国最大的电商平台之一,淘宝拥有海量的商品信息和用户行为数据。然而,如何有效地获取和管理这些数据,以支持电商平台的智能化运营和精准营销&…

保护您的Android应用程序:Android应用程序安全一览

保护您的Android应用程序:Android应用程序安全一览 我们都知道Android是为所有人设计的——开放、面向开发者、面向用户,这种开放性为今天和明天的移动技术提供了很多便利。然而,开放性也带来了需要妥善处理的安全风险。 安全是我们所有人都…

操作系统系列:Unix进程系统调用fork,wait,exec

操作系统系列:Unix进程系统调用 fork系统调用fork()运用的小练习 wait系统调用Zombiesexec 系列系统调用 开发者可以查看创建新进程的系统调用,这个模块会讨论与进程相关的Unix系统调用,下一个模块会讨论Win32 APIs相关的进程。 fork系统调用…

德人合科技 | 公司电脑文件加密系统

公司电脑文件加密系统是一种可以对电脑文件进行加密的保护机制。它使用驱动层透明加密技术,能够在用户无感知的情况下对文件进行加密,从源头上保障数据安全和使用安全。 PC端访问地址: www.drhchina.com 此类系统主要有以下几个特点和功能&a…

ffmpeg入门之Windows开发之二(视频转码)

添加ffmpeg windows编译安装及入门指南-CSDN博客 的头文件和依赖库如下&#xff1a; main 函数如下&#xff1a; extern "C" { #ifdef __cplusplus #define __STDC_CONSTANT_MACROS #endif } extern "C" { #include <libavutil/timestamp.h> #in…

概率论复习

第一章&#xff1a;随机概率及其概率 A和B相容就是 AB 空集 全概率公式与贝叶斯公式&#xff1a; 伯努利求概率&#xff1a; 第二章&#xff1a;一维随机变量及其分布&#xff1a; 离散型随机变量求分布律&#xff1a; 利用常规离散性分布求概率&#xff1a; 连续性随机变量…

一份来自政治学研究者的大模型“实用指南”

大模型&#xff0c;对一个社会科学的研究者意味着什么&#xff1f; 如果抛开一些为了追新打快蹭热点而进行的类似大模型万物的“交叉科学”与“跨界研究”&#xff0c;只是将大模型视为一个“强大的工具”&#xff0c;那么这种“智能工具”如何赋能社会科学研究呢&#xff1f;…

轻空间气膜体育馆打造绿色运动空间

近年来&#xff0c;我国为全面实施全民健身战略&#xff0c;坚持“发展群众体育&#xff0c;服务健康中国”的理念&#xff0c;积极推动群众参与各类体育活动。为了满足全民健身和全面小康的深度融合发展需求&#xff0c;我国正在不断拓展公共体育设施的建设与开放。气膜体育馆…

光储充综合新能源储能系统研究笔记

1. 微电网与储能 1.1. 储能 1.1.1. 概述 储能是指电力储能&#xff0c;属于一种电网供需平衡技术。电力储能的形式通常是通过将电能转化为动能、(水)势能、化学能等形式进行储存&#xff0c;在需要时再转化回电能。尽管电力储能技术并非新兴技术&#xff0c;但从产业角度来看…

服务器解析漏洞是什么?攻击检测及修复

服务器解析漏洞&#xff08;Server-side Include Vulnerability&#xff0c;SSI漏洞&#xff09;是一种安全漏洞&#xff0c;通常出现在支持服务器端包含&#xff08;SSI&#xff09;功能的Web服务器上。SSI是一种在Web页面中嵌入动态内容的技术&#xff0c;允许开发人员将外部…

Amazon CodeWhisperer 体验

文章作者&#xff1a;jiangbei 1. CodeWhisperer 安装 1.1 先安装 IDEA&#xff0c;如下图&#xff0c;IDEA2022 安装为例&#xff1a; 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者…