阿玛尼北京快乐8官方网:

 找回密码
 立即注册

只需一步,阿玛尼北京快乐8官方网:快速开始

微信扫一扫,快速登录

搜索
查看: 483|回复: 12

阿玛尼北京快乐8官方网: [STM] STM32+BQ34Z100+蓝牙串口通讯

www.vni99.com登入
1#
发表于 2019-9-10 16:44:00 | 只看该作者 |倒序浏览 |阅读模式

马上注册,认识更多玩家好友,查阅更多资源,享有更多功能

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
各位大神们,小弟有个问题请教。
目前想用单片机通过IIC读取BQ34z100里的电压,电流,容量,温度等数据然后通过蓝牙发送,手机端软件显示。
手机端软件用APP Inventor做的,界面是这样的。刚刚学习使用还不是很熟,对收到的数据只能分段分配显示出来,比如:蓝牙收到4800020003659920000,就会分配到电压48V,电流2A,温度36.5,RSOC 99%,FCC 20000mAh。

现在不知道单片可不可以将IIC读到的数据1数据2数据3数据4数据5这样一次发出来?是不是要设置6寄存器,5个用来存读到的数据,把5个寄存器的数据排列放到第6个里,然后串口发出来?
程序里要怎么写才能排列这5个数据呢?

2#
发表于 2019-9-10 22:08:11 | 只看该作者
拼接字符串了解下
3#
发表于 7 天前 | 只看该作者
寄存器和变量能分清吗?

点评

分不清,零基础,在别人的程序上修改。  详情 回复 发表于 7 天前
4#
 楼主| 发表于 7 天前 | 只看该作者
595953427@qq 发表于 2019-9-11 00:28
寄存器和变量能分清吗?

分不清,零基础,在别人的程序上修改。

点评

寄存器是厂家给的,可以控制芯片;变量是自己定义的,一般是用来运算。 这下能分清了吗?  详情 回复 发表于 7 天前
5#
发表于 7 天前 | 只看该作者
秦昌磊 发表于 2019-9-11 10:39
分不清,零基础,在别人的程序上修改。

寄存器是厂家给的,可以控制芯片;变量是自己定义的,一般是用来运算。
这下能分清了吗?

点评

谢谢,这下知道啦。  详情 回复 发表于 6 天前
6#
发表于 7 天前 | 只看该作者
贴源码!根据你的描述,最简单,应该可以放在while大循环里,读5个寄存器。每读一个,用sprintf格式化到缓存下,然后可选strcat,strcpy,memcpy,等等等等。。。。进行拼接就行了,注意那几个库函数使用上的坑。应该可以解决你的问题。

点评

源码现在有iic读BQ34Z100的,也有串口通讯的源码,还有OLED的源码。把这三个程序整合成一个我需要的。  详情 回复 发表于 6 天前
7#
发表于 7 天前 | 只看该作者
数据连串发出来不是难题,倒是一串数据怎么结束,还会继续让你头大的。

点评

一串数据发完后加个回车可以吗,看好多都是这样的,  详情 回复 发表于 6 天前
8#
 楼主| 发表于 6 天前 | 只看该作者
595953427@qq 发表于 2019-9-11 12:27
寄存器是厂家给的,可以控制芯片;变量是自己定义的,一般是用来运算。
这下能分清了吗?
...

谢谢,这下知道啦。
9#
 楼主| 发表于 6 天前 | 只看该作者
infozx 发表于 2019-9-11 17:26
数据连串发出来不是难题,倒是一串数据怎么结束,还会继续让你头大的。 ...

一串数据发完后加个回车可以吗,看好多都是这样的,
10#
 楼主| 发表于 6 天前 | 只看该作者
liujingjushi 发表于 2019-9-11 13:40
贴源码!根据你的描述,最简单,应该可以放在while大循环里,读5个寄存器。每读一个,用sprintf格式化到缓 ...

源码现在有iic读BQ34Z100的,也有串口通讯的源码,还有OLED的源码。把这三个程序整合成一个我需要的。
11#
发表于 6 天前 | 只看该作者
你不把代码发上来,完全看不明白你要说的是什么...


printf( "%d%d%d%d%d" , 48000, 2000,365, 99, 20000 );
就可以打出来了.
或者一次次打,这样就只需要一个临时变量.



12#
 楼主| 发表于 6 天前 | 只看该作者
这是IIC.C里的程序
#include "myiic.h"
#include "delay.h"

void SDA_OUT(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB,&GPIO_InitStructure);
}

void SDA_IN(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB,&GPIO_InitStructure);
}

void IIC_Init(void)
{                       
        GPIO_InitTypeDef GPIO_InitStructure;

        RCC_AHBPeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
        SCL_H;
        SDA_H;
}

void IIC_Start(void)
{
        SDA_OUT();
        SDA_H;
        SCL_H;
        delay_us(4);
        SDA_L;
        delay_us(4);
        SCL_L;
}

void IIC_Stop(void)
{
        SDA_OUT();
        SCL_L;
        SDA_L;
        delay_us(2);
        SCL_H;
        SDA_H;
        delay_us(4);
}

void IIC_Ack(void)
{
        SCL_L;
        SDA_OUT();
        SDA_L;
        delay_us(2);
        SCL_H;
        delay_us(2);
        SCL_L;
}

void IIC_NAck(void)
{
        SCL_L;
        SDA_OUT();
        SDA_H;
        delay_us(2);
        SCL_H;
        delay_us(2);
        SCL_L;
}       
  
void IIC_Write_Byte(u_8 txd)
{                        
        u_8 t;
       
        SDA_OUT();
        SCL_L;
        for(t = 0; t < 8; t++)
        {
                if ((txd << t) & 0x80)
                        SDA_H;
                else
                        SDA_L;
                delay_us(2);
                SCL_H;
                delay_us(2);
                SCL_L;
                delay_us(2);
        }
}

u8 IIC_Read_Byte(void)
{
        uint8_t i = 0;
        uint8_t data = 0;
       
        SDA_H;
        SDA_IN();
        for (i = 0; i < 8; i++)
        {
                SCL_L;
                delay_us(4);
                SCL_H;
                delay_us(1);
    data = (data << 1);
    if (READ_SDA)
                        data++;
                delay_us(2);
        }
  
        return data;
}


这是BQ34Z100.C里的程序
#include "bq34.h"

u8 IIC_Wait_Ack(void)
{
        u16 ucErrTime = 0;
        SDA_IN();
        SDA_H;
        delay_us(4);          
        SCL_H;
        delay_us(4);         
        while(READ_SDA)
        {
                ucErrTime++;
                if(ucErrTime > 250)
                {
                        IIC_Stop();
                        return 1;
                }
        }
        SCL_L;  
        return 0;  
}


void Bq34z100_Write_nByte(u8 *pBuff, u8 num)
{
        u8 i = 0;
                        
        IIC_Start();
        IIC_Write_Byte(BQ34Z100_WRITE);
        IIC_Wait_Ack();
        for(i = 0;i < num; i++)
        {
                IIC_Write_Byte(*pBuff);
                IIC_Wait_Ack();
                pBuff++;
        }
//        IIC_Stop();
}

void Bq34z100_Read_nByte(u8 *pBuff, u8 num)
{
        u8 i = 0;
       
        IIC_Start();
        IIC_Write_Byte(BQ34Z100_READ);
        IIC_Wait_Ack();
        for(i = 0;i < num; i++)
        {
                *pBuff = IIC_Read_Byte();
                if (i != (num - 1))
                        IIC_Ack();
                pBuff++;
        }       
        IIC_NAck();
        IIC_Stop();       
}


void Bq34z100_Read_nByte   ,  void Bq34z100_Write_nByte这两句不懂什么意思?
13#
发表于 4 天前 | 只看该作者
秦昌磊 发表于 2019-9-12 23:05
这是IIC.C里的程序
#include "myiic.h"
#include "delay.h"

连续读取,连续写入n个寄存器,地址会顺序自加
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|关于我们|联系我们|网站条款|数码之家 ( 闽ICP备05031405号 )

GMT+8, 2019-9-18 09:08 , Processed in 0.164128 second(s), 16 queries , MemCache On.

Powered by www.vni99.com登入

© 2001-2019 Comsenz Inc.

快速回复 返回顶部 返回列表
黄金城罗马 优彩彩票网官方直营网 北京pk10电子游戏 彩都会官方直营网 优发娱乐下载官方网
新葡京充值登入 处女星号PT电子网址 申博AB亚洲馆开奖 澳门美高梅在线 k7比分直播
申博游戏手机版网址游戏 巴黎人江西时时彩q群 007真人备用网址 申博太阳城快乐十分开奖记录 新澳门鱼虾蟹骰宝时时彩平台网址
博彩游戏排行 维多利亚江西11选5开奖直播 www.687.net 神话幸运农场时时彩网址 澳门赌场EB易博馆开奖时刻表