我是靠谱客的博主 淡定石头,最近开发中收集的这篇文章主要介绍瑞萨sk-s7g2之旅(3)(HX711的简单移植),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  对于sk-s7g2这块板子,特点是,性能比较好,但是资料比较少。这块板子的资料与例程远比stm32,51等单片机少。但是例程都是人写的,故此,只要我们知道原理便可以写出来。今天我介绍A/D hx711在瑞萨sk-s7g2上的实现方式。对于这个A/D 。简单说HX711是一款专为高精度称重传感器而设计的24位A/D转换器芯片。与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。具体的原理,我将不予以介绍。

对于大多数传感器,我们知道原理以后便可以移植,移植的首要问题便是时序。这是一个难点。移植前我们简单了解一下。这个A/D的时序简单说就是,PD_SCK从低电平变高电平并保持在高电平超过60μs,HX711 即进入断电状态如图8 所示。如使用片内稳压电源电路,断电时,外部传感器和片内A/D 转换器会被同时断电。当PD_SCK 重新回到低电平时,芯片会自动复位后进入正常工作状态。芯片从复位或断电状态进入正常工作状态后,通道A和增益128会被自动选择作为第一次A/D转换的输入通道和增益。搞清楚这个,我们就可以来移植。将具体的功能换为瑞萨的代码。

 


/********************************************************************
** 文
件
名:HX711驱动程序
** 创
建
人:yk
** 最后修改时间:2018年7月1日
*********************************************************************/
#define HX711DIN_PORT
(IOPORT_PORT_05_PIN_13)//定义引脚
#define HX711SCK_PORT
(IOPORT_PORT_05_PIN_11)
void hx711_init(void)
{
g_ioport.p_api-> pinDirectionSet(HX711DIN_PORT,IOPORT_DIRECTION_INPUT);
g_ioport.p_api->pinWrite(HX711SCK_PORT, IOPORT_LEVEL_LOW);
g_ioport.p_api-> pinDirectionSet(HX711SCK_PORT,IOPORT_DIRECTION_OUTPUT);
}
int32_t hx711_read(void)
{
int mask = 24;
int32_t tmp=0;
ioport_level_t in;
g_ioport.p_api->pinWrite(HX711SCK_PORT, IOPORT_LEVEL_LOW);
do
{
tmp=tmp<<1;
g_ioport.p_api->pinWrite(HX711SCK_PORT, IOPORT_LEVEL_HIGH);
g_ioport.p_api->pinRead(HX711DIN_PORT,&in);
if(in)tmp+=1;
mask-=1;
g_ioport.p_api->pinWrite(HX711SCK_PORT, IOPORT_LEVEL_LOW);
}
while(mask);
g_ioport.p_api->pinWrite(HX711SCK_PORT, IOPORT_LEVEL_HIGH);
g_ioport.p_api->pinWrite(HX711SCK_PORT, IOPORT_LEVEL_LOW);
tmp = (tmp & 0x800000ul)?(tmp | 0xff000000ul):tmp;
tmp=(tmp+108563)/1654;
return tmp;
}

可以直接用,但是具体的设备,需要校准公式,暂时没有研究万能公式,移植之后经过简单的数据处理便可以直接使用。已通过测试

 

最后

以上就是淡定石头为你收集整理的瑞萨sk-s7g2之旅(3)(HX711的简单移植)的全部内容,希望文章能够帮你解决瑞萨sk-s7g2之旅(3)(HX711的简单移植)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部