当前位置: 首页 > news >正文

网站设计好网站wordpress企业类模板下载

网站设计好网站,wordpress企业类模板下载,阿里巴巴电子商务网站,wordpress共用用户数据目录 概述 1 软硬件 1.1 软硬件环境信息 1.2 开发板信息 1.3 调试器信息 2 FSP和KEIL配置I2C 2.1 I2C硬件电路 2.2 FSP配置参数 3 软件功能实现 3.1 FSP生成项目 3.2 FSP中I2C接口函数 3.2.1 I2C Master的函数列表 3.2.2 函数功能介绍 3.3 I2C接口 4 验证i2c接口…目录 概述 1 软硬件 1.1 软硬件环境信息 1.2 开发板信息 1.3 调试器信息 2 FSP和KEIL配置I2C 2.1 I2C硬件电路 2.2 FSP配置参数 3 软件功能实现 3.1 FSP生成项目 3.2 FSP中I2C接口函数 3.2.1 I2C Master的函数列表 3.2.2 函数功能介绍 3.3 I2C接口 4 验证i2c接口 4.1 测试程序实现 4.2 OLED驱动程序 5 测试 概述 本文主要介绍Renesas R7FA8D1BH (Cortex®-M85) I2C接口应用方法包括使用FSP配置I2C接口参数并生成基于KEIL的工程代码。还是使用该I2C接口设计一个驱动程序用于控制OLED。以验证I2C函数的功能。 1 软硬件 1.1 软硬件环境信息 软硬件信息版本信息Renesas MCUR7FA8D1BHKeilMDK ARM 5.38FSP 版本5.3.0调试工具N32G45XVL-STBDAP-LINK 1.2 开发板信息 笔者选择使用野火耀阳开发板_瑞萨RA8该板块的主控MCU为R7FA8D1BHECBD7FA8D1BHECBD的内核为ARM Contex-M85。 1.3 调试器信息 对于R7FA8D1BHECBD芯片其使用的内核为Cortex®-M85 Core, ST-LINK-V2或者J-LINK-V9不支持下载和调试功能。笔者经过多次尝试发现N32G45XVL-STB板卡上自带的DAP-LINK可以下载和调试R7FA8D1BHECBD。 下图为N32G45XVL-STB开发板实物图 2 FSP和KEIL配置I2C 2.1 I2C硬件电路 耀阳开发板_瑞萨RA8上设计了专门的OLED硬件接口其对应的I2C接口为: SCK:    P802 SDA:    P801 2.2 FSP配置参数 1配置Pin引脚信息 选择SCI2 其对应的IO端口分别为P802SCL,  P801SDA 2)  创建I2C对应的Stack 3配置I2C对应的Stack的相关参数 3 软件功能实现 3.1 FSP生成项目 使用FSP配置完成参数之后就可以使用FSP的Generate Project生成项目在hal_data.c文件中生成i2c相关的参数 3.2 FSP中I2C接口函数 3.2.1 I2C Master的函数列表 SCI_B HAL模块上的简单I2C主模块支持与I2C从设备的事务处理。必须提供回调函数它将在传输或接收完成时调用。回调参数将包含有关事务状态、传输的字节和指向用户定义上下文的指针的信息。 特性 1支持多种传输速率       标准模式支持高达100 kHz的交易率。       快速模式支持高达400 kHz的交易率。 2SDA延迟(以纳秒为单位)可以指定为配置的一部分。 3I2C Master从从设备读取数据。 4I2C Master写从设备。 5中止任何正在进行的事务。 6设置从设备地址。 7非阻塞行为是通过使用回调实现的。 8额外的构建时特性       可选的(构建时)DTC分别支持读和写。       可选的(构建时)支持10位从属寻址。 3.2.2 函数功能介绍 1R_SCI_B_I2C_Open() fsp_err_t R_SCI_B_I2C_Open ( i2c_master_ctrl_t *const p_api_ctrl, i2c_master_cfg_t const *const p_cfg ) 参数介绍 Opens the I2C device. Return values FSP_SUCCESSRequested clock rate was set exactly.FSP_ERR_ALREADY_OPENModule is already open.FSP_ERR_IP_CHANNEL_NOT_PRESENTChannel is not available on this MCU.FSP_ERR_ASSERTIONParameter check failure due to one or more reasons below: p_api_ctrl or p_cfg is NULL.extended parameter is NULL.Callback parameter is NULL.Clock rate requested is greater than 400KHzInvalid IRQ number assigned 2 R_SCI_B_I2C_Read() fsp_err_t R_SCI_B_I2C_Read ( i2c_master_ctrl_t *const p_api_ctrl, uint8_t *const p_dest, uint32_t const bytes, bool const restart ) 参数介绍 从I2C设备执行读取操作。当操作(成功)完成时调用者将通过回调中的I2C_MASTER_EVENT_RX_COMPLETE收到通知。 Return values FSP_SUCCESSFunction executed without issue.FSP_ERR_ASSERTIONThe parameter p_ctrl, p_dest is NULL, bytes is 0.FSP_ERR_INVALID_SIZEProvided number of bytes more than uint16_t size (65535) while DTC is used for data transfer.FSP_ERR_NOT_OPENDevice was not even opened. 3R_SCI_B_I2C_Write() fsp_err_t R_SCI_B_I2C_Write ( i2c_master_ctrl_t *const p_api_ctrl, uint8_t *const p_src, uint32_t const bytes, bool const restart ) 参数介绍 对I2C设备进行写操作。 如果相关通道上已经有正在进行的I2C传输则此函数将失败。否则将开始I2C写操作。当用户没有提供回调时该函数执行阻塞写入。否则写操作是非阻塞的并且当操作完成时将通过回调中的I2C_EVENT_TX_COMPLETE通知调用者。 Return values FSP_SUCCESSFunction executed without issue.FSP_ERR_ASSERTIONp_ctrl, p_src is NULL.FSP_ERR_INVALID_SIZEProvided number of bytes more than uint16_t size (65535) while DTC is used for data transfer.FSP_ERR_NOT_OPENDevice was not even opened. 4R_SCI_B_I2C_Abort() fsp_err_t R_SCI_B_I2C_Abort ( i2c_master_ctrl_t *const p_api_ctrl ) 参数介绍 中止任何正在进行的传输并强制I2C外设进入就绪状态。 此功能将安全地终止任何正在进行的I2C传输与设备。如果传输被中止用户将通过一个中止事件的回调得到通知。由于回调是可选的因此在这种情况下该函数还将返回一个特定的错误代码。 Return values FSP_SUCCESSTransaction was aborted without issue.FSP_ERR_ASSERTIONp_ctrl is NULL.FSP_ERR_NOT_OPENDevice was not even opened. 5  R_SCI_B_I2C_SlaveAddressSet() fsp_err_t R_SCI_B_I2C_SlaveAddressSet ( i2c_master_ctrl_t *const p_api_ctrl, uint32_t const slave, i2c_master_addr_mode_t const addr_mode ) 参数介绍 设置从设备的地址和寻址方式。 该功能用于设置从设备地址和寻址方式而无需重新配置整个总线。 Return values FSP_SUCCESSAddress of the slave is set correctly.FSP_ERR_ASSERTIONp_ctrl or address is NULL.FSP_ERR_NOT_OPENDevice was not even opened.FSP_ERR_IN_USEAn I2C Transaction is in progress. 6 R_SCI_B_I2C_CallbackSet() fsp_err_t R_SCI_B_I2C_CallbackSet ( i2c_master_ctrl_t *const p_api_ctrl, void(*)(i2c_master_callback_args_t *) p_callback, void const *const p_context, i2c_master_callback_args_t *const p_callback_memory ) Updates the user callback and has option of providing memory for callback structure. Implements i2c_master_api_t::callbackSet Return values FSP_SUCCESSCallback updated successfully.FSP_ERR_ASSERTIONA required pointer is NULL.FSP_ERR_NOT_OPENThe control block has not been opened.FSP_ERR_NO_CALLBACK_MEMORYp_callback is non-secure and p_callback_memory is either secure or NULL. 7 R_SCI_B_I2C_StatusGet() fsp_err_t R_SCI_B_I2C_StatusGet ( i2c_master_ctrl_t *const p_api_ctrl, i2c_master_status_t * p_status ) 参数介绍 Provides driver status. Return values FSP_SUCCESSStatus stored in p_status.FSP_ERR_ASSERTIONNULL pointer. 8 R_SCI_B_I2C_Close() fsp_err_t R_SCI_B_I2C_Close ( i2c_master_ctrl_t *const p_api_ctrl ) 参数介绍 关闭I2C设备。下电I2C外设。 此功能将安全地终止任何正在进行的I2C传输与设备。如果传输被中止用户将通过一个中止事件的回调得到通知。由于回调是可选的因此在这种情况下该函数还将返回一个特定的错误代码。 Return values FSP_SUCCESSDevice closed without issue.FSP_ERR_ASSERTIONThe parameter p_ctrl is NULL.FSP_ERR_NOT_OPENDevice was not even opened. 3.3 I2C接口 1创建bsp_i2c.c文件编写如下代码 /*FILE NAME : bsp_i2c.cDescription: user i2c interface Author : tangmingfei2013126.comDate : 2024/06/03*/ #include bsp_i2c.h #include hal_data.h#define TIME_OUT 10000i2c_master_event_t g_i2c_callback_event;void sci_b_i2c_master_callback (i2c_master_callback_args_t * p_args) {if (NULL ! p_args){g_i2c_callback_event p_args-event;} } void i2c2_init_para( uint32_t const slaveAddress ) {fsp_err_t err;err R_SCI_B_I2C_Open(g_i2c0_ctrl, g_i2c0_cfg);assert(FSP_SUCCESS err);err R_SCI_B_I2C_SlaveAddressSet(g_i2c0_ctrl, slaveAddress, I2C_MASTER_ADDR_MODE_7BIT);assert(FSP_SUCCESS err); }void i2c2_write_bytes(uint8_t *pbuff, uint16_t length ) {unsigned int timeout_ms TIME_OUT;fsp_err_t err;err R_SCI_B_I2C_Write(g_i2c0_ctrl, pbuff, length, false);assert(FSP_SUCCESS err);g_i2c_callback_event I2C_MASTER_EVENT_ABORTED;/* Since there is nothing else to do, block until Callback triggers*/while ((I2C_MASTER_EVENT_TX_COMPLETE ! g_i2c_callback_event) timeout_ms){R_BSP_SoftwareDelay(1U, BSP_DELAY_UNITS_MILLISECONDS);timeout_ms--;;} }void i2c2_read_bytes(uint8_t *pbuff, uint16_t length ) {unsigned int timeout_ms TIME_OUT;fsp_err_t err;g_i2c_callback_event I2C_MASTER_EVENT_ABORTED;err R_SCI_B_I2C_Read(g_i2c0_ctrl, pbuff, length, false);assert(FSP_SUCCESS err);/* Since there is nothing else to do, block until Callback triggers*/while ((I2C_MASTER_EVENT_RX_COMPLETE ! g_i2c_callback_event) timeout_ms){R_BSP_SoftwareDelay(1U, BSP_DELAY_UNITS_MILLISECONDS);timeout_ms--;;} }/* End of this file */ 2创建bsp_i2c.h文件编写如下代码 /*FILE NAME : bsp_i2c.hDescription: user i2c interface Author : tangmingfei2013126.comDate : 2024/06/03*/#ifndef BSP_I2C_H#define BSP_I2C_H#include hal_data.hvoid i2c2_init_para( uint32_t const slaveAddress ); void i2c2_write_bytes(uint8_t *pbuff, uint16_t length ); void i2c2_read_bytes(uint8_t *pbuff, uint16_t length );#endif /* BSP_I2C_H */ 4 验证i2c接口 4.1 测试程序实现 笔者使用i2c接口驱动一个OLED该设备的驱动实现原理在该篇文章中已经有详细的介绍。本文主要介绍直接使用Renesas 的I2C接口来驱动OLED。 详解0.9寸OLED驱动开发linux platform tree i2c 应用实例_i2c总线的oled-CSDN博客 4.2 OLED驱动程序 1创建oled_drv.c文件编写如下代码 /** \file$Id: oled.c 40486 2018-08-12 13:50:21Z tangmingfei2013126.com $Copyright (c)tangmingfei2013126.com Holding B.V. All Rights Reserved.This source code and any compilation or derivative thereof is the proprietary information of mingfei.tang Holding B.V. and is confidential in nature. Under no circumstances is this software to be combined with any Open Source Software in any way or placed under an Open Source License of any type without the express written permission of mingfei.tang Holding B.V. */ /******************************************************************************* * EXPORT INCLUDE FILES *******************************************************************************/ #include bsp_i2c.h #include oled_drv.h /******************************************************************************* * LOCAL INCLUDE FILES *******************************************************************************/ #include font.hstatic uint8_t charSize; /****************************************************************************** * LOCAL FUNCTION DECLARATIONS ******************************************************************************/ static void oled_WriteRegister(uint8_t val, uint8_t reg);/****************************************************************************** * EXPORTED FUNCTIONS ******************************************************************************/ void oled_Init(void) { i2c2_init_para(OLED_ADDRESS);oled_WriteRegister(0xAE,PARA);//--display offoled_WriteRegister(0x00,PARA);//---set low column addressoled_WriteRegister(0x10,PARA);//---set high column addressoled_WriteRegister(0x40,PARA);//--set start line address oled_WriteRegister(0xB0,PARA);//--set page addressoled_WriteRegister(0x81,PARA); // contract controloled_WriteRegister(0xFF,PARA);//--128 oled_WriteRegister(0xA1,PARA);//set segment remap oled_WriteRegister(0xA6,PARA);//--normal / reverseoled_WriteRegister(0xA8,PARA);//--set multiplex ratio(1 to 64)oled_WriteRegister(0x3F,PARA);//--1/32 dutyoled_WriteRegister(0xC8,PARA);//Com scan directionoled_WriteRegister(0xD3,PARA);//-set display offsetoled_WriteRegister(0x00,PARA);//oled_WriteRegister(0xD5,PARA);//set osc divisionoled_WriteRegister(0x80,PARA);//oled_WriteRegister(0xD8,PARA);//set area color mode offoled_WriteRegister(0x05,PARA);//oled_WriteRegister(0xD9,PARA);//Set Pre-Charge Periodoled_WriteRegister(0xF1,PARA);//oled_WriteRegister(0xDA,PARA);//set com pin configuartionoled_WriteRegister(0x12,PARA);//oled_WriteRegister(0xDB,PARA);//set Vcomholed_WriteRegister(0x30,PARA);//oled_WriteRegister(0x8D,PARA);//set charge pump enableoled_WriteRegister(0x14,PARA);//oled_WriteRegister(0xAF,PARA);//--turn on oled paneloled_Clear();#if OLED_DEBUG oled_SetCharSize( FONT_16 ); oled_PrintfString(10,0,(uint8_t*)Renesas MCU ); oled_SetCharSize( FONT_12 );oled_PrintfString(1,3,(uint8_t*)Type: R7FA8D1BH); oled_PrintfString(2,6,(uint8_t*)Cortex-M85 core); #endif} void oled_SetCharSize( uint8_t val ) {charSize val; }void oled_SetPostion( uint8_t x, uint8_t y) {oled_WriteRegister(0xb0y,PARA);oled_WriteRegister(((x0xf0)4)|0x10,PARA);oled_WriteRegister((x0x0f),PARA); }void oled_displayOn(void) {oled_WriteRegister(0X8D,PARA); oled_WriteRegister(0X14,PARA); oled_WriteRegister(0XAF,PARA); }void oled_DisplayOff(void) {oled_WriteRegister(0X8D,PARA);oled_WriteRegister(0X10,PARA);oled_WriteRegister(0XAE,PARA); }void oled_Clear(void) { uint8_t i,n;for(i0;i8;i) { oled_WriteRegister (0xb0i,PARA); oled_WriteRegister (0x00,PARA);oled_WriteRegister (0x10,PARA); for( n 0;n 128; n){oled_WriteRegister(0,DATA);} } }void oled_UpScreenOn(void) { uint8_t i,n;for(i0;i8;i) { oled_WriteRegister (0xb0i,PARA);oled_WriteRegister (0x00,PARA); oled_WriteRegister (0x10,PARA);for(n0;n128;n){oled_WriteRegister(1,DATA); }} }void oled_PrintfChar(uint8_t x,uint8_t y,uint8_t val ) { uint8_t character 0;uint8_t i0;character val- ;if( x X_WIDTH-1){x 0;y 2;}if( charSize FONT_16 ){oled_SetPostion(x,y); for( i 0; i 8; i){oled_WriteRegister(F8X16[character*16i],DATA);}oled_SetPostion(x,y1);for(i0;i8;i){oled_WriteRegister(F8X16[character*16i8],DATA);}}else {oled_SetPostion(x,y);for(i0;i6;i){oled_WriteRegister(F6x8[character*6i],DATA);}} }void oled_PrintfString(uint8_t x,uint8_t y,uint8_t *str ) {uint8_t index 0;while ( str[index]!\0 ){oled_PrintfChar(x,y,str[index] );x 8;if( x 120 ){ x0;y2;}index;} }void oled_PrintmutiChar(uint8_t x,uint8_t y,uint8_t *str, uint8_t length ) {for(uint8_t index 0; index length; index ){oled_PrintfChar(x,y,str[index] );x 8;if( x 120 ){ x0;y2;}} }/****************************************************************************** * LOCAL FUNCTIONS ******************************************************************************/ static void oled_WriteRegister(uint8_t val, uint8_t reg) { fsp_err_t err;unsigned char buff[2];err R_SCI_B_I2C_SlaveAddressSet( g_i2c0_ctrl, OLED_ADDRESS, I2C_MASTER_ADDR_MODE_7BIT);assert(FSP_SUCCESS err);buff[0] reg;buff[1] val;i2c2_write_bytes(buff, 2); } /* End of this file */2创建oled_drv.h文件编写如下代码 /** \file$Id: oled.h 40486 2018-08-12 13:50:21Z tangmingfei2013126.com $Copyright (c)tangmingfei2013126.com Holding B.V. All Rights Reserved.This source code and any compilation or derivative thereof is the proprietary information of mingfei.tang Holding B.V. and is confidential in nature. Under no circumstances is this software to be combined with any Open Source Software in any way or placed under an Open Source License of any type without the express written permission of mingfei.tang Holding B.V. */ #ifndef __OLED_DRV_H #define __OLED_DRV_H/****************************************************************************** * C DECLARATION WRAPPER ******************************************************************************/#ifdef __cplusplus extern C { #endif#include hal_data.h /****************************************************************************** * LOCAL MACROS AND DEFINITIONS ******************************************************************************/ #define OLED_DEBUG 1 #define OLED_ADDRESS 0x3ctypedef enum {FONT_16 0,FONT_12 1, }OLED_CHARSIZE;typedef enum {PARA 0,DATA 0x40, }OLED_PARE_REG;typedef enum {X_WIDTH 128,Y_WIDTH 64, }OLED_SCREEN_SIZE;/****************************************************************************** * EXPORTED MACROS AND DEFINITIONS ******************************************************************************/ /****************************************************************************** * EXPORTED FUNCTIONS ******************************************************************************/ void oled_Clear(void) ; void oled_Init(void); void oled_UpScreenOn(void);void oled_PrintfString(uint8_t x,uint8_t y,uint8_t *str); void oled_PrintfChar(uint8_t x,uint8_t y,uint8_t val); void oled_SetPostion( uint8_t x, uint8_t y) ; void oled_SetCharSize( uint8_t val ); void oled_PrintmutiChar(uint8_t x,uint8_t y,uint8_t *str, uint8_t length);/****************************************************************************** * END OF C DECLARATION WRAPPER ******************************************************************************/#ifdef __cplusplus } #endif#endif /* __OLED_DRV_H */ 5 测试 1调用OLED驱动函数 2编译代码下载代码到板卡中运行结果如下
http://www.zqtcl.cn/news/361885/

相关文章:

  • 做t-shirt素材网站企业网站建设结论
  • 唐山公司做网站查询建筑资质的网站
  • 邯郸的网站建设网站正能量入口
  • 网站导航栏最多可以做几个宝安网站设计排名
  • 自己怎样用手机建网站网件app
  • 周口网站开发西安市建设厅网站
  • 怎么授权小说做游戏网站论坛网站开发语言
  • 烟台商城网站建设怎么样引流顾客到店方法
  • 北京做网站公司的排名python基础教程pdf
  • 网站建设为什么学flash建设工程询价网站有哪些
  • 网站内容建设机制企业管理模式有哪些
  • 中山网站建设文化价格建网站域名注册
  • 手机电影网站怎么做大连最新发布
  • 珠三角网站建设网页制作专业知识
  • 罗湖微信网站制作深圳做网站哪个公司最好
  • ps如何做ppt模板下载网站网站模板分类
  • 网站建设在线网站服务器和直播服务器一样吗
  • iapp网站做软件教程朋友圈广告投放平台
  • 优门设 网站网站代理 正规备案
  • 衡水做wap网站上海做网站吧
  • seo推广思路seo线下培训班
  • 没有备案的网站怎么做淘宝客html5开发手机网站
  • 酒店旅游团购网站建设推广普通话实践总结
  • 基本的网站开发技术路线建设网站的好处有哪些
  • 网站排行怎么做wordpress all in one seo插件
  • 河北特定网站建设推荐wordpress添加vip用户组
  • 北京商城网站建设地址asp.net网站开发 pdf
  • 如何用网页制作网站龙岩门户网站
  • 中国建设银行官网站下载建设网站弹出后加载不进去
  • 广告网站制作多少钱建设工程合同甲方