[分享] 【MXCHIP Open1081】TCP+AD+18B20和一些问题

ljj3166   2014-11-30 14:40 楼主
上次使用了UDP发送数据到PC 这回试验了一下TCP,顺道驱动了一下18B20和一个AD通道 AD通道挂在Arduino接口的A0端 dasdsa.jpg 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的数据线都进行了内部上拉 不过听说,内部都是弱上拉呢,算不算个隐患呢? 也许这块片子例外吧 看看工程结构吧,直接把文件包含进来了 dasdsa.jpg 基本上就是这么些东西,下面进入问题时间
先帖代码,做了些基本的注释 回复可见,哇咔咔 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. 代码复制进来, dasdsa.jpg 都变成clientfd+斜体了,需要的同志自行补上吧算不算论坛的bug?@soso 本帖最后由 ljj3166 于 2014-11-30 14:57 编辑
So TM what......?

回复评论 (3)

庆科的函数库说明比较简略
有朋友手上有比较详细的说明吗
抛一个
So TM what......?
点赞  2014-11-30 14:45
回复看看哈  
点赞  2014-12-4 20:55
学习学习
点赞  2014-12-10 20:55
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复