[经验] 【NanoPi NEO试用体验】【结项】Nanopi 与 51单片机的通讯

[复制链接]

技术员

发表于 2016-12-21 12:58:05   1062 查看 3 回复 显示全部楼层 倒序浏览
分享
本帖最后由 quartz010 于 2016-12-21 13:12 编辑

0.序
最近太忙,时间太紧,终于难得一空闲,赶紧来这里
****************************************
我现在极为蛋疼的写着第二遍........刚刚竟然因为一个github的链接
把我的帖子搞没了......
****************************************

1.51单片机的core code

这里是串口初始化程序 9600的波特率
  1. void uart_init(void)                //115200bps@11.0592MHz
  2. {
  3.         SCON=0x50;//设定串口工作方式0101 0000
  4.         PCON=0x00;
  5.         TMOD=0x20;
  6.         EA=1;
  7.         ES=1;
  8.         TL1=0xfd;
  9.         TH1=0xfd;
  10.         TR1=1;
  11. }
复制代码

这个是串口的中断程序用于对P1的控制
  1. void UART() interrupt 4
  2. {
  3.         if(RI)        //检测是否接收完成
  4.         {         
  5.                 num = SBUF;          //num 取出接收缓存器的值
  6.                 P0 = num;
  7.                
  8.                                 
  9.                 RI = 0;
  10.         }
  11. }
复制代码

2.Nano pi的core 代码
纯手撸的代码(再也不放连接了....心累)
  1. int send_byte_com(int sfd, char data_byte)
  2. {
  3.         char write_buf_cmd[1];
  4.         write_buf_cmd[0] = data_byte;

  5.         write(sfd, write_buf_cmd, sizeof(write_buf_cmd));

  6. }

  7. int read_byte_com(int sfd)
  8. {
  9.         char read_buf_cmd[1];
  10.         char data_byte;

  11.         read(sfd, read_buf_cmd, sizeof(read_buf_cmd));
  12.         data_byte = read_buf_cmd[0];

  13.         return data_byte;
  14. }
复制代码
上述代码适用于对串口的字节命令的的发送
以字节的形式发送
但是的确过于愚蠢....
  1. int set_com_config(int sfd, struct termios *config)
  2. {

  3.         cfmakeraw(config);

  4.         config->c_cflag &= ~CSIZE;

  5. #if 1 == STOP_BITS
  6.         config->c_cflag &= ~CSTOPB;
  7. #elif 2 == STOP_BITS
  8.         config->c_cflag |= CSTOPB;
  9. #endif

  10. #if N == PARITY
  11.         config->c_cflag &= ~PARENB;
  12.         config->c_cflag &= ~INPCK;
  13. #endif

  14.         config->c_cflag |= DATA_BITS;        //
  15.         cfsetispeed(config, SPEED);                //
  16.         cfsetospeed(config, SPEED);

  17.         config->c_cc[VTIME] = 0;
  18.         config->c_cc[VMIN] = 1;

  19.         tcflush(sfd ,TCIFLUSH);                        //flush the buffer

  20.         if ((tcsetattr(sfd, TCSANOW, config) != 0)) {
  21.                 perror("sfd set:");
  22.                 exit (-1);
  23.         }

  24. }
复制代码

这里是用来配置串口的程序,对应的宏可以有不同 的配置,像是数据位停止位等等

3. 大体的装置
$MMC}G7EF3ZM%9`MV6ZR]AG.jpg
将其级联
nano 的ttys1 与单片机的P3.0 P3.1连接
51收到NanoPI的字节命令后,可对LED有不同的控制变化
(测试功能)

4.更高一步
上述的东西只是完成了底层的基本功能
基于图形化的近乎是必不可少的
所以选择了Qt
源于其良好的跨平台特性
QQ截图20161221124517.jpg
放图
推荐书籍
Qt 从入门到放弃

5.最后的话
首先,感谢电子发烧友论坛给予的这次的使用机会真的十分感谢
学生党,有这样一个宝贵的机会十分难得,通过这次试用我也学到了很多,
自身能力也有渐渐提高
学习linux串口,qt等等的,这个过程是我的里程碑

路漫漫兮其修远
一步一步向前走!
最后感谢发烧友论坛、感谢友善之臂给的试用机会。




QQ截图20161028165201.jpg
QQ截图20161028164945.jpg
QQ截图20161028162610.jpg
QQ截图20161028160558.jpg
标签:单片机
发表于 2016-12-21 13:48:15  
楼主可以看看上传图片方式:http://bbs.elecfans.com/jishu_429732_1_1.html
回复

点赞 举报

高级工程师

发表于 2017-2-5 14:29:03  

PCB在线计价下单

板子大小:

cm
X
cm

层数:

2

板子数量:

10

厚度:

1.6
感谢楼主无私分享。。。。。
回复

举报

实习生

发表于 2017-5-21 13:36:43  
有完整的NANOPI的串口
程序吗
回复

点赞 举报

只有小组成员才能发言,加入小组>>

37个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表
-

推荐专区

技术干货集中营

专家问答

用户帮助┃咨询与建议┃版主议事

工程师杂谈

工程师创意

工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

ARM技术论坛

Android论坛

Linux论坛

单片机/MCU论坛

FPGA|CPLD|ASIC论坛

DSP论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

无线充电技术

-

硬件设计论坛

PCB设计论坛

电路设计论坛

电子元器件论坛

控制|传感

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

仪器仪表技术专区

-

EDA设计论坛

multisim论坛

PADS技术论坛

Protel|AD|DXP论坛

Allegro论坛

proteus论坛|仿真论坛

EasyEDA-中国人自已的EDA工具

Orcad论坛

-

综合技术与应用

电机控制

智能电网

光电及显示

参考设计中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

-

无线通信论坛

无线通信技术专区

天线|RF射频|微波|雷达技术

-

IC设计论坛

芯片测试与失效分析

Mixed Signal/SOC[数模混合芯片设计]

Analog/RF IC设计

设计与制造封装测试

-

厂商专区

TI论坛

TI Deyisupport社区

-

检测技术与质量

电磁兼容(EMC)设计与整改

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

供求信息发布

供需广告

招聘┃求职发布区

电子展览展会专区