官方手册上写关于FEE,TMS570LS3137中的片上flash分为三部分,如下图1所示

我们所用的FEE功能只适用于BANK7,因为这一块是TI采用的特殊工艺65nmflash,我们可以以任意字节进行读写。
这个东西的配置比较简单直接在HCG中进行配置,唯一需要注意的是,我们需要从官方下载F021FLASH-libary这个库文件,这个是免费的下载地址如下:
http://www.ti.com/tool/f021flashapi

这里面有源代码,和一些库文件,我们只需要选择其中一个库文件即可。
接下来我们进行工程演示:

1.HCG配置

配置SCI是为了串口打印,然后配置FEE。

这里我们就是用默认的180Mhz操作频率,

Number of FEE Blocks我们选择2个,选择完成有下面会自动打钩两个,我们可以在block size中设置大小,
这个设置的大小就是我们以多少字节进行写入,我选择的是20,和8字节写入。


这一块实验中还没有涉及到,我会在下个实验中继续深入使用,所以我们就是用默认的配置。

HCG就配置完成了,生成代码。

2.建立CCS工程,将HCG配置的代码进行导入。
会发现导入完成后,编译会报错,提示我们F021.h文件没有定义。这时候我们就需要将F021flash-libary移植进去,
官网下载完成后我们将C,H文件导入到CCS中,如下图所示。

关于上面的lib文件,我是选择其中的一个lib,具体的使用那个得看用户手册,上面有详细解释。

以上配置完成后,我导入main代码,如下:

int main(void)
{
/* USER CODE BEGIN (3) */unsigned int BlockNumber;unsigned int BlockOffset, Length;unsigned char *Read_Ptr=read_data;unsigned int loop;unsigned int set_w_num = 0;for(loop=0;loop<100;loop++)SpecialRamBlock[loop] = loop;TI_Fee_Init();sciInit();printf("FEE Init complete\r\n");do{TI_Fee_MainFunction();delay();Status=TI_Fee_GetStatus(0 );}while(Status!=IDLE);BlockNumber=0x1;TI_Fee_WriteAsync(BlockNumber, &SpecialRamBlock[0]);do{TI_Fee_MainFunction();delay();Status=TI_Fee_GetStatus(0);}while(Status!=IDLE);TI_Fee_WriteSync(BlockNumber, &SpecialRamBlock[0]);set_w_num = TI_FeeInternal_GetBlockIndex(BlockNumber);set_w_num = TI_FeeInternal_GetBlockSize(set_w_num)-TI_FEE_BLOCK_OVERHEAD;printf("set_w_num is %d\r\n",set_w_num);BlockNumber=0x2;TI_Fee_WriteAsync(BlockNumber, &SpecialRamBlock[set_w_num]);do{TI_Fee_MainFunction();delay();Status=TI_Fee_GetStatus(0);}while(Status!=IDLE);TI_Fee_WriteSync(BlockNumber, &SpecialRamBlock[set_w_num]);set_w_num = TI_FeeInternal_GetBlockIndex(BlockNumber);set_w_num = TI_FeeInternal_GetBlockSize(set_w_num)-TI_FEE_BLOCK_OVERHEAD;printf("set_w_num2 is %d\r\n",set_w_num);BlockOffset = 0;Length = 0xFFFF;oResult=TI_Fee_Read(BlockNumber,BlockOffset,Read_Ptr,Length);do{TI_Fee_MainFunction();delay();Status=TI_Fee_GetStatus(0);}while(Status!=IDLE);for(loop=0;loop<100;loop++){printf("%d\r\n",*Read_Ptr);Read_Ptr++;}TI_Fee_Format(0xA5A5A5A5U);while(1);
/* USER CODE END */return 0;
}

实现的效果图如下:

通过以上结果发现了问题,我开始的意愿是打印0到27的数字,为什么只打印了20-27,我做了一下分析,
结果发现是我的打印出现问题。
这里应该是需要把两块的block都打印出来,我做了如下改动。

int main(void)
{
/* USER CODE BEGIN (3) */unsigned int BlockNumber;unsigned int BlockOffset, Length;unsigned char *Read_Ptr=read_data;unsigned char *Read_Ptr2=read_data2;unsigned int loop;unsigned int index = 0;unsigned int set_w_num = 0;TI_Fee_AddressType cur_address = 0;TI_Fee_AddressType next_address = 0;for(loop=0;loop<100;loop++)SpecialRamBlock[loop] = loop;TI_Fee_Init();sciInit();printf("FEE Init complete\r\n");do{TI_Fee_MainFunction();delay();Status=TI_Fee_GetStatus(0 );}while(Status!=IDLE);BlockNumber=0x1;TI_Fee_WriteAsync(BlockNumber, &SpecialRamBlock[0]);do{TI_Fee_MainFunction();delay();Status=TI_Fee_GetStatus(0);}while(Status!=IDLE);//TI_Fee_WriteSync(BlockNumber, &SpecialRamBlock[0]);index = TI_FeeInternal_GetBlockIndex(BlockNumber);set_w_num = TI_FeeInternal_GetBlockSize(index)-TI_FEE_BLOCK_OVERHEAD;cur_address = TI_FeeInternal_GetCurrentBlockAddress(BlockNumber,0,index);printf("index is %d,set_w_num is %d\r\n",index,set_w_num);BlockOffset = 0;Length = 20;oResult=TI_Fee_Read(BlockNumber,BlockOffset,Read_Ptr,Length);do{TI_Fee_MainFunction();delay();Status=TI_Fee_GetStatus(0);}while(Status!=IDLE);printf("block 1:");for(loop=0;loop<20;loop++){printf("%d,",*Read_Ptr);Read_Ptr++;}printf("\r\n");BlockNumber=0x2;TI_Fee_WriteAsync(BlockNumber, &SpecialRamBlock[set_w_num]);do{TI_Fee_MainFunction();delay();Status=TI_Fee_GetStatus(0);}while(Status!=IDLE);TI_Fee_WriteSync(BlockNumber, &SpecialRamBlock[set_w_num]);index = TI_FeeInternal_GetBlockIndex(BlockNumber);set_w_num = TI_FeeInternal_GetBlockSize(index)-TI_FEE_BLOCK_OVERHEAD;cur_address = TI_FeeInternal_GetCurrentBlockAddress(BlockNumber,0,index);printf("index %d,set_w_num2 is %d\r\n",index,set_w_num);BlockOffset = 0;Length = 8;oResult=TI_Fee_Read(BlockNumber,BlockOffset,Read_Ptr2,Length);do{TI_Fee_MainFunction();delay();Status=TI_Fee_GetStatus(0);}while(Status!=IDLE);printf("block 2:");for(loop=0;loop<8;loop++){printf("%d,",*Read_Ptr2);Read_Ptr2++;}printf("\r\n");BlockNumber=0x1;BlockOffset = 0;Length = 20;oResult=TI_Fee_Read(BlockNumber,BlockOffset,Read_Ptr,Length);do{TI_Fee_MainFunction();delay();Status=TI_Fee_GetStatus(0);}while(Status!=IDLE);printf("block 1:");for(loop=0;loop<20;loop++){printf("%d,",*Read_Ptr);Read_Ptr++;}printf("\r\n");TI_Fee_Format(0xA5A5A5A5U);  //格式化就是将整个bank7进行格式化。while(1);
/* USER CODE END */return 0;
}

打印结果如下所示:

通过这个例子,应该可以理解如何使用block。就是将一整块的sector化为为若干个block,然后在这些block中进行读写,
已达到存储的目的。

工程源码详见:https://download.csdn.net/download/weixin_42259397/12497297

TMS570ls3137 之FEE使用相关推荐

  1. leetcode 714. Best Time to Buy and Sell Stock with Transaction Fee | 714. 买卖股票的佳最时机含手续费(递归->傻缓存->dp)

    题目 https://leetcode.com/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/ 题解 经典的 暴力递归 - ...

  2. Magento Add Fee or Discount to Order Totals

    2019独角兽企业重金招聘Python工程师标准>>> In this tutorial, we will see how to add new line item to magen ...

  3. 【leetcode】714. Best Time to Buy and Sell Stock with Transaction Fee

    题目如下: Your are given an array of integers prices, for which the i-th element is the price of a given ...

  4. 【DP + 卖股票】LeetCode 714. Best Time to Buy and Sell Stock with Transaction Fee

    LeetCode 714. Best Time to Buy and Sell Stock with Transaction Fee Solution1: 参考网址:http://www.cnblog ...

  5. 以太币转帐速度_燃起来吧!一文带你读懂以太坊网络中的Gas、Gas Fee、Gas Price、Gas...

    曾用过区块链相关应用,不管是交易所.DApp 或是虚拟货币钱包的人,一定都听过矿工费(Gas Fee) 这个词.它是当你要在区块链网路发起一笔交易时,所要支付给矿工的一笔手续费.其实很容易理解,就好比 ...

  6. 【文献阅读】Commission Fee is not Enough: A Hierarchical Reinforced Framework for Portfolio Management

    1 解决了什么问题? 现有的投资组合管理方法有一个缺点,它们通常假设每次对资产的重新分配都可以立即完成,从而忽略了价格滑点(price slippage)作为交易成本的一部分. 价格滑点:操盘手期望为 ...

  7. amazon - sellercentral 之 sellercentral report - long term storage fee report

    目录 1.Business and Data Method 2.Report Field Definitions 3.FBA Small and Light Program 4.Long Term S ...

  8. amazon - sellercentral 之 sellercentral report - monthly storage fee report

    目录 1.Report Field Definitions 2.Business and Data Method 3.Monthly inventory storage fee charge logi ...

  9. AUTOSAR FEE 评估策略分析

    在前面提到的基于相同的Mcu. 可能有不同的供应商提供Fee模块(或者可以给Fee Suppiler提要求),他们的对于换页机制,存储结构,读写速度等相关功能可能存在差异 因此在选择Fee Suppl ...

最新文章

  1. Squid 反向代理服务器配置
  2. 一个需要原创精神的年代
  3. context of your framing
  4. C语言结构体字节对齐
  5. Leaflet笔记-Leaflet与echarts结合使用(在地图上绘图表)
  6. Bootstrap表单的可选布局
  7. 拍牌人数陡增6万人,中标率降至7.8%,我们错过了拍沪牌的黄金期
  8. Internet 选项在哪
  9. 大数据分析与应用(中级) 数据挖掘概念及流程
  10. Python 自然语言处理笔记(五)——信息检索系统,基于Lucene实现
  11. 2023跨境出海指南:韩国网红营销白皮书
  12. 我想起个公司名字,招投标行业的,快速搜索标讯的,科技公司,蓝色logo的
  13. 如何解决您与此网站之间建立的连接不安全,该页面采用不加密的http传输协议?
  14. 【谷歌浏览器打开网页报错】
  15. 你刚才在淘宝上买了一件东西
  16. Voronoi图与路径规划
  17. python 顺丰快递分拣小程序作业结果
  18. 微信报名系统于商家,于用户有何作用?
  19. certutil程序生成MD5
  20. android实现底部弹出框与软键盘冲突(全面屏虚拟键适配)

热门文章

  1. mmdetection训练自己的COCO数据集
  2. resetlogs,noresetlogs,完全恢复,不完全恢复
  3. 模拟炒股服务器响应错误,模拟炒股常见问题
  4. outlook服务器恢复用户邮件,如何恢复Outlook中永久删除的电子邮件
  5. python实现android应用稳定性测试
  6. [Python从零到壹] 五十一.图像增强及运算篇之图像灰度直方图对比分析万字详解
  7. 手机删除的视频怎么恢复?即刻扫描,快速恢复
  8. Doo Prime 为泰国 SOS 儿童村送温暖,公益有起点爱心无疆界
  9. DCOS之监控技术选型(中)
  10. 强化学习 --- 概述