9053|20

336

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ RL78/G14 DEMO使用 [复制链接]

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ RL78/G14 DEMO使用
收到板子后就把程序安装了,先用下DEMO程序,启动界面选择COM4连接,可以看到检测数据状态输出,截图如下:

在此可以查看内存数据:

在此可以做自检:


编程环境CubeSuite+和Renesas的e2studio都已经安装,但是编译完成后还是不能下载程序,需要查询下资料才行

[ 本帖最后由 youzizhile 于 2013-9-23 21:09 编辑 ]

最新回复

您好,请问您曾发表的基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ RL78/G14 DEMO使用 [复制链接] 这个帖子的multisim仿真文件能提供给我一下吗?感激不尽   详情 回复 发表于 2016-9-18 20:19
点赞 关注(1)

回复
举报

336

帖子

0

TA的资源

纯净的硅(初级)

沙发
 

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+串口使用和LED呼吸灯设计

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ 串口使用和LED呼吸灯设计

下载Applilet3 for RL78 V2.00.00 工具可以根据配置生成外设驱动代码,这个比较方便实用。

我的串口代码是从这个软件直接生成的,我用的是串口uart2.连接pl2303 usb转串口调试工具,加入代码可以从PC端收到数据。
整体程序是在RL78_G13_Tutorial_Basic_Operation上面修改的,修改mcu型号和相关错误后,加入Applilet3生成的 代码就可以在线调试运行了。编译生成的程序通过编程工具进行下载。
调用Renesas Flash Programmer下载生成的程序。


点亮LED截图

串口接收数据截图,视频由于之前文件太大,进行了转码,有点不太清晰


[ 本帖最后由 youzizhile 于 2013-9-25 21:59 编辑 ]

RL78_G14_Tutorial_Basic_Operation.zip

157.57 KB, 下载次数: 35

售价: 1 分芯积分  [记录]

串口和呼吸灯操作

VID_20130923_194825_baofeng.mp4

4.98 MB, 下载次数: 32

点评

不错,赞一个,继续哈:)  详情 回复 发表于 2013-9-24 10:40
 
 

回复

768

帖子

711

TA的资源

纯净的硅(高级)

板凳
 

回复 沙发youzizhile 的帖子

不错,赞一个,继续哈

点评

:pleased: 加油  详情 回复 发表于 2013-9-25 21:53
 
 
 

回复

336

帖子

0

TA的资源

纯净的硅(初级)

4
 

回复 板凳苏莎莎 的帖子

加油
 
 
 

回复

336

帖子

0

TA的资源

纯净的硅(初级)

5
 

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ 电路原理图发布

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ 电路原理图发布
模拟前端部分电路原理图为下图所示:

先仿真下电路的性能参数,采用multisim环境进行仿真和调试,调整参数以满足项目要求。
整体前端采集的包括高通滤波器等,multisim仿真电路如下图1所示:

multisim仿真结果如下图所示:


multisim仿真50hz陷波器电路截图如下图所示

multisim
仿真50hz陷波器仿真截图如下图所示:

各项指标都可以满足,下一步该动手焊接电路板了,这一步的调试时最容易出问题的,也是比较难调试的一步。

heart signal get.pdf

40.49 KB, 下载次数: 10

 
 
 

回复

336

帖子

0

TA的资源

纯净的硅(初级)

6
 

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ 电路原理图发布之二

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ 电路原理图发布之二
系统中LM324采用单电源供电,比±双电源简单,功能一样能满足。考虑到方便调试和携带,今天添加了电源转换电路,利用RL78板子的5V逆变12V电源,为LM324和AD620供电。逆变电路采用TI的MC33063A 1.5A 峰值升压开关稳压器,MC33063A的显著特点是体积小,集成度高,外围元件少,转换效率高,应用灵活方便。MC33063A内部含有带温度补偿的1.25 V参考稳压电路、电平比较器、带有峰值电流检测电路的占空比可控的周期振荡器、与门电路、RS触发器、输出驱动器和大电流输出开关管。该器件可实现升压、降压或电压极性反转变换的功能。
电路原理图截图如下:


该电路的输出电压值通过改变R21,R22电阻值来进行调整,Vout=(1+R21/R22)X1.25V.
这个芯片在之前的一个板子上用过,到时我把这部分电路切割下来,配合我焊接的板子使用,可以减少调试焊接难度!


附件是MC33063A的产品手册和我的心电信号采集前端电路原理图(allegro格式的文件),喜欢的可以收藏。

[ 本帖最后由 youzizhile 于 2013-10-18 17:34 编辑 ]

MC33063A.pdf

873.13 KB, 下载次数: 3

HEART_GET.DSN

77 KB, 下载次数: 0

 
 
 

回复

336

帖子

0

TA的资源

纯净的硅(初级)

7
 

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ 电路PCB焊接组装发布

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ 电路PCB焊接组装发布
从购买器件到现在持续将近一个半月了,昨天才把整个系统框架组装完毕。电路的模型采用万用板焊接,同时添加了之前用到的一块电源板子和usb转串口组装而成,比较简陋,但是功能不缺少!
先发一个整体面板图:


电路板分为5各部分,下面分别介绍:
1.此部分为RL78核心板,添加了2.54mm间距的单排底座,同时引出串口、供电输出接口和AD输入接口。

整个电路背板部分如下图所示:

2.此部分为在焊接的心电采集的模拟前端电路部分,主要有一片AD620和一片LM324构成,电路已经在multisim中进行仿真,结果可以满足要求。
LM324部分电路:

AD620电路部分:

3.此部分为5V转12V电路,采用了之前用过的电路板,切割掉无用的部分后,引入5V电源输入,引出12V输出到电路板上,这样,可以只使用usb的5V为整个系统供电。此电路采用TI的MC33063A来实现,最大可以输出1.5A的电流,完全能满足要求。

4.此部分为采集左右胳膊的电极接口和左腿的反馈电极环形带。
左右胳膊的电极部分截图:

反馈左腿的电极:


5.此部分为usb转串口电路板,采用铁牛的板子,主要还是用pL2303来实现的。


下一步为抓紧时间电路调试了和程序联调了。

DSCF0762.JPG (474.75 KB, 下载次数: 0)

DSCF0762.JPG
 
 
 

回复

336

帖子

0

TA的资源

纯净的硅(初级)

8
 

有一张图片怎么跑到附件中了呢?

有一张图片怎么跑到附件中了呢?
 
 
 

回复

336

帖子

0

TA的资源

纯净的硅(初级)

9
 

RL78评估板的心电图采集系统 创意进度贴+ RL78的AD采样到电脑串口程序调试完成

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ RL78的AD采样到电脑串口程序调试完成

周末放弃了休息和出去玩的机会,呆在家里,拿着刚组装焊接好的电路板,连接电脑开始了调试
     之前调试已经把AD采样可以正常使用,但是配置还是有点问题。把AIN2的可调电位器放到最大,应该就是5V左右,可是在跟踪时,数据总是在2.1V和5V来回跳动,一下正确,一下不正确,刚开始以为是数据的问题,后来发现跳动很有规律,再从Applilet3 for RL78_G14程序中查找是否配置错误,没有发现问题。网上相关的资源也很少,后来没有办法,查看RL78的《RL78用户手册 硬件篇》,发现AD采样有很多种模式,我的模式选择错误,应该设定为 “软件触发模式(选择模式,连续转换模式)",如下图所示:


自己的问题出在模式选择上,选择了扫描模式导致数据出错。
同时还有一点要注意,就是在AD_start程序中,要加上一句while(ADCS);

/***********************************************************************************************************************
* Function Name: R_ADC_Start
* Description  : This function starts the AD converter.
* Arguments    : None
* Return Value : None
***********************************************************************************************************************/
void R_ADC_Start(void)
{
    ADCE = 1U;
    ADIF = 0U;  /* clear INTAD interrupt flag */
    ADMK = 0U;  /* enable INTAD interrupt */
    ADCS = 1U;  /* enable AD conversion */
   while(ADCS);
  //  Delay_adc(1000);
}
     在串口调试上也出问题了,使用例程的串口程序可以发送数据,但是发送我调用的函数时,发出的数据要么是一对重复的数据,要么就是不能发出,单步调试可以正常跟踪到数据是正确的,但是连续运行就出错。当时一直认为自己的串口没有配置正确,就查看RL78的《RL78用户手册 硬件篇》,查看串口配置信息等,但是也没有查出有用的东西。
  今天上午开始继续调试,利用中断调试跟踪程序的运行,发现串口发送数据中还引出一个中断服务程序,在这个程序中也在发送数据。按照自己的想法,关闭中断,直接控制数据的传送,不能正常工作,但调试可以正常,和昨天一样的现象。
一直到下午5点才调试成功,而程序只是在R_UART2_Send改动一些,添加了        
。。。。。。。。
while(g_uart2_tx_count)
。。。。。。
for (i=0; i < 6000; i++)                {
                NOP();
                }
。。。。。。

这样做的目的首先不用再次调中断,其次在等待数据发送完成后再次进行发送数据,不会出现之前重复发数据的问题,根据时钟的不同,可以调整延时的长短,控制for循环变量来实现。
更改后的程序如下所示:
/***********************************************************************************************************************
* Function Name: R_UART2_Send
* Description  : This function sends UART2 data.
* Arguments    : tx_buf -
*                    transfer buffer pointer
*                tx_num -
*                    buffer size
* Return Value : status -
*                    MD_OK or MD_ARGERROR
***********************************************************************************************************************/
MD_STATUS R_UART2_Send(uint8_t * const tx_buf, uint16_t tx_num)
{
/* Declare a loop count variable */
   uint16_t i;
    MD_STATUS status = MD_OK;

    if (tx_num < 1U)
    {
        status = MD_ARGERROR;
    }
    else
    {
            gp_uart2_tx_address = tx_buf;
        g_uart2_tx_count = tx_num;
        SMR10 |= _0001_SAU_BUFFER_EMPTY;
         STMK2 = 1U;    /* disable INTST2 interrupt */
           while(g_uart2_tx_count)
         {
                TXD2 = *gp_uart2_tx_address;
                for (i=0; i < 6000; i++)
                {
                NOP();
                }
                gp_uart2_tx_address++;
                g_uart2_tx_count--;
             //   STMK2 = 0U;    /* enable INTST2 interrupt */
          }
    }

    return (status);
}

/* Start user code for adding. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */

现在可以正常工作了,只要旋转AIN2的电位器,电脑串口数据立马更新。   


DSCF0769_baofeng.mp4 (8.03 MB, 下载次数: 4)
 
 
 

回复

336

帖子

0

TA的资源

纯净的硅(初级)

10
 

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ LABVIEW界面设计

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ LABVIEW界面设计
LABVIEW界面可以自己自主设计布局,添加想要的功能,界面显示等。
本次项目的界面设计如下图所示:后端程序还需要再进行优化。
 
 
 

回复

336

帖子

0

TA的资源

纯净的硅(初级)

11
 

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ LABVIEW程序设计

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ LABVIEW程序设计
又话费了周末的时间在家调试程序:
配置串口参数截图

搜索串口数据帧头和帧尾,去除无用的和错误的数据,然后显示索引到的数据,程序截图如下:


还差最后一步,程序联调要在最后一周给调出来,要抓紧时间了。

3.jpg (150.31 KB, 下载次数: 1)

3.jpg
 
 
 

回复

336

帖子

0

TA的资源

纯净的硅(初级)

12
 

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+RL78 ad采集端程序发布

基于LABVIEWRL78评估板的心电图采集系统创意进度贴+RL78 ad采集端程序发布
这个采集程序上周都已经完成了,本来想着和labview程序一起发布,怕到时帖子发了图片又给弄乱了,先发布RL78/G14ad采集端程序吧。
选取AD采样的AIN3P23)引脚作为采样的输入管脚,利用Applilet3 for RL78_G14产生AD的驱动程序。才开始直接采样总是出问题,后来发现是自己的配置错误,使用选择模式,而不是扫描模式就能解决问题。具体配置如下所示:
void R_ADC_Create(void)
{
   ADCEN = 1U;  /* supply AD clock */
   ADM0 = _00_AD_ADM0_INITIALVALUE; /* disable AD conversion and clear ADM0 register */
   ADMK = 1U;  /* disable INTADinterrupt */
   ADIF = 0U;  /* clear INTADinterrupt flag */
   /* Set INTAD low priority */
   ADPR1 = 1U;
   ADPR0 = 1U;
   /* Set ANI0 - ANI3 pin as analog input */
  PM2 |= 0x0FU;
   ADM0 = _30_AD_CONVERSION_CLOCK_4 | _00_AD_TIME_MODE_NORMAL_1 |_00_AD_OPERMODE_SELECT;
   ADM1 = _00_AD_TRIGGER_SOFTWARE | _00_AD_CONVMODE_CONSELECT;
   ADM2 = _00_AD_POSITIVE_VDD | _00_AD_NEGATIVE_VSS | _00_AD_AREA_MODE_1 |_00_AD_RESOLUTION_10BIT;
   ADUL = _FF_AD_ADUL_VALUE;
   ADLL = _00_AD_ADLL_VALUE;
   ADS = _03_AD_INPUT_CHANNEL_3;
}
同时在ADC_Start中添加   while(ADCS); ,等待系统AD配置完成,才进行下一步。
void R_ADC_Start(void)
{
   ADCE = 1U;
   ADIF = 0U;  /* clear INTADinterrupt flag */
   ADMK = 0U;  /* enable INTADinterrupt */
   ADCS = 1U;  /* enable ADconversion */
  while(ADCS);
}
然后编写中断服务函数,修改r_cg_adc_user.c中的函数如下:
__interrupt static void r_adc_interrupt(void)
{
   /* Start user code. Do not edit comment generated here */
      ADCS = 0U;  /* disable ADconversion */
    uart_adc_value();

   /* End user code. Do not edit comment generated here */
}
中断服务函数调用了  uart_adc_value()函数,此函数原型如下:
void uart_adc_value(void)
{
        int s,i;
          uint8_t string[3]={'\r','\n'};
           uint8_t start[3]="ST";
          s=((long)(ADCR>>6)*5000)/1024;
          uint16_ToString(adc_string_value,0,s);
          while(R_UART2_Send(start,2));
          while(R_UART2_Send(adc_string_value,4));
         NOP();
         while(R_UART2_Send(string,2));
}
其中的R_UART2_Send被我修改过,中间添加了延时函数,否则会传输不正常。
原型修改后如下所示:
/***********************************************************************************************************************
* Function Name: R_UART2_Send
* Description  : This function sends UART2 data.
* Arguments    : tx_buf -
*                    transfer buffer pointer
*                tx_num -
*                    buffer size
* Return Value : status -
*                    MD_OK or MD_ARGERROR
***********************************************************************************************************************/
MD_STATUS R_UART2_Send(uint8_t * consttx_buf, uint16_t tx_num)
{
/* Declare a loop count variable */
  uint16_t i;
   MD_STATUS status = MD_OK;

   if (tx_num < 1U)
    {
       status = MD_ARGERROR;
    }
   else
    {
             gp_uart2_tx_address= tx_buf;
        g_uart2_tx_count = tx_num;
        SMR10 |= _0001_SAU_BUFFER_EMPTY;
        STMK2= 1U;    /* disable INTST2 interrupt */
        while(g_uart2_tx_count)
          {
                 TXD2 =*gp_uart2_tx_address;
                   /* Allow for the transmission to complete */
                   for (i=0; i < 6000; i++)
                   {
                   /* Add 1 instruction delay */
                   NOP();
                   }
                gp_uart2_tx_address++;
                g_uart2_tx_count--;
              //   STMK2 = 0U;    /* enable INTST2 interrupt */
           }
    }

   return (status);
}
上述的函数uart_adc_value()由在主函数中的while循环中断调用adc_get_value()函数触发,adc_get_value函数原型如下:
void adc_get_value(void)
{
          R_ADC_Start();
          R_ADC_Stop();      
}
上述程序经过改动编译后,调试运行结构都符合预期。然后下载程序到RL78/G14中的FLASH中,通过renesas flash programmer下载到芯片中,然后修改跳线帽使程序全速运行。

整体程序见附件中。

[ 本帖最后由 youzizhile 于 2013-11-2 19:47 编辑 ]

RL78_AD_to_uart2.zip

288.43 KB, 下载次数: 7

售价: 1 分芯积分  [记录]

 
 
 

回复

336

帖子

0

TA的资源

纯净的硅(初级)

13
 
基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ LABVIEW程序发布
labview前面板界面设计,没有时间来优化界面,设计比较简单,

labview程序设计

查询数据帧头帧尾,子程序利用RL78发送的数据头“ST”和数据尾“\r\n”判断一帧的开始和结束,然后合并数据进行后续的处理。

查询数据帧头帧尾程序设计


心电数据程序采集显示视频如下:


修改RL78的AD采集端程序采集板子自带电位器的模拟输入端数据,手动调节电位器,labview采集数据视频如下:


labview采集端程序在附件中,有兴趣的朋友可以下载探讨。

[ 本帖最后由 youzizhile 于 2013-11-3 10:48 编辑 ]

RL78g14 AD到串口数据采集 labview接收端.zip

30.21 KB, 下载次数: 6

售价: 1 分芯积分  [记录]

 
 
 

回复

336

帖子

0

TA的资源

纯净的硅(初级)

14
 
延迟了最后时间,还要在把整个硬件和接收端程序优化下,加油
 
 
 

回复

336

帖子

0

TA的资源

纯净的硅(初级)

15
 
最近一直在外地出差,还没有时间来更新,大家都加油
 
 
 

回复

1976

帖子

1

TA的资源

五彩晶圆(初级)

16
 
支持一个

点评

O(∩_∩)O谢谢,加油  详情 回复 发表于 2013-11-30 10:46
 
 
 

回复

336

帖子

0

TA的资源

纯净的硅(初级)

17
 

回复 16楼bobde163 的帖子

O(∩_∩)O谢谢,加油
 
 
 

回复

336

帖子

0

TA的资源

纯净的硅(初级)

18
 

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ 结贴

基于LABVIEW和RL78评估板的心电图采集系统 创意进度贴+ 结贴
结贴发布在一个新帖中了,下面是连接
https://bbs.eeworld.com.cn/thread-420775-1-1.html
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

19
 
支持一个,学习呢
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

20
 
支持一个,学习呢
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表