2167|3

3414

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

【MXCHIP Open1081】TCP+AD+18B20和一些问题 [复制链接]

本帖最后由 ljj3166 于 2014-11-30 14:57 编辑

上次使用了UDP发送数据到PC
这回试验了一下TCP,顺道驱动了一下18B20和一个AD通道
AD通道挂在Arduino接口的A0端

A0对应SOC芯片的54管脚,PA1管脚
这里One-Wire硬件上有个很奇怪的地方,没有上拉电阻
没记错的话,18B20数据手册要求是需要上拉的
难道是芯片GPIO配置了上拉?
看了一下驱动代码,好像真是这样
void Onewire_OUT_PULL_UP(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
        GPIO_InitStructure.GPIO_Pin = DS18B20_Pin;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(DS18B20_Port, &GPIO_InitStructure);        
}

void Onewire_OUT_FLOATING(void)
{

        GPIO_InitTypeDef  GPIO_InitStructure;
        GPIO_InitStructure.GPIO_Pin = DS18B20_Pin;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(DS18B20_Port, &GPIO_InitStructure);
}

void Onewire_IN_FLOATING(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = DS18B20_Pin;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(DS18B20_Port, &GPIO_InitStructure);        
}

void Onewire_IN_PULL_UP(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = DS18B20_Pin;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(DS18B20_Port, &GPIO_InitStructure);
}

18B20的数据线都进行了内部上拉
不过听说,内部都是弱上拉呢,算不算个隐患呢?
也许这块片子例外吧
看看工程结构吧,直接把文件包含进来了

基本上就是这么些东西,下面进入问题时间


先帖代码,做了些基本的注释
回复可见,哇咔咔
TCP的代码和UDP稍有区别
游客,如果您要查看本帖隐藏内容请回复

问题出现了
send函数,如果先发送字符串,再以变量的形式传递进去发送,然后再发送字符串。最后再以变量的形式传递进去发送
就会出现问题
譬如
send(clientfd, "Temperture&AD Value:", sizeof("Temperture&AD Value:"), 0);
send(clientfd, TMP_buff, TMP_str_len, 0);
send(clientfd, "&", sizeof("&"), 0);

send(clientfd, AD_buff, AD_str_len, 0);
send(clientfd, "\r\n", sizeof("\r\n"), 0);

这种排序方式,使得最后2句send(clientfd, AD_buff, AD_str_len, 0);和send(clientfd, "\r\n", sizeof("\r\n"), 0);无法发送。
看上去似乎是进行一次变量传递发送后,只能使用固定字符串形式发送了,再发送变量就没有效果了
很奇怪的一个问题
最后实在没办法,把温度变量、AD变量和固定字符串,用strcat函数全部链接到一个缓存里头,才能正常发送
不知道坛子里面有没有MXCHIP的大牛,求科普。
最后上个视频吧,呵呵



P.S. 代码复制进来, 都变成clientfd+斜体了,需要的同志自行补上吧算不算论坛的bug?@soso
此帖出自RF/无线论坛

最新回复

学习学习   详情 回复 发表于 2014-12-10 20:55
点赞 关注
个人签名

So TM what......?

 


回复
举报

3414

帖子

0

TA的资源

纯净的硅(高级)

沙发
 
庆科的函数库说明比较简略
有朋友手上有比较详细的说明吗
抛一个
此帖出自RF/无线论坛
个人签名

So TM what......?

 

 

回复

37

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
回复看看哈  
此帖出自RF/无线论坛
 
 
 

回复

638

帖子

0

TA的资源

一粒金砂(高级)

4
 
学习学习
此帖出自RF/无线论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表