【原创首发】开源基于AT32 SIP/VOIP电话

前言

本次为了反馈各位粉丝的关注,特此分享 AT32_VOIP 工程,此功能其实跟我之前发过的《STM32F429的VOIP功能》是一样的,只是用了AT32F437。

其实那个工程是一个比较Demo中的Demo,很多功能和硬件依赖性太大了。后面项目中发现AT32F437单芯片就能完成这个功能,就选择了AT32F437来实现这个功能。

有很多朋友会问,为什么不用ESP32呢?当然我们实际上也用的ESP32S3,因为更方便。但是我发现很多关注我的朋友,更喜欢用MCU来玩这个网络会议电话。所以算是宠粉吧。

这次分享会从0到编译,到运行都说清楚。

喂到嘴里的鸡汤。

让我们开始吧 😄.

本次开源地址:

https://gitee.com/seliverwang/at32_voip.git


硬件

我使用的一块AT32F437ZMT7的开发板,它有4MB的Flash,512KB的RAM.

参数 描述
CPU AT32F437ZITx
主频 288MHz
Flash 4MB
RAM 512KB
音频接口 I2S2
音频配置 I2C1
LOG UART1
CODEC WM8978
以太网 RMII
引脚分配
  • 音频接口使用的I2S2.
引脚 描述
PB12 I2S_WS / I2S_FS
PC6 I2S_MCLK
PB13 I2S_CK / I2S_SCLK / I2S_BCK
PC2 I2S_EXT_SD / I2S_SIN
PC3 I2S_SD / I2S_SOUT
  • WM8978配置使用 I2C1.
引脚 描述
PB6 I2C_SCL
PB7 I2C_SDA
  • LOG输出使用UART1.
引脚 描述
PA9 UART_TX
PA10 UART_RX
  • 以太网配置使用RMII.
引脚 描述
PA1 RMII_REF_CLK
PA2 RMII_MDIO
PC1 RMII_MDC
PD8 RMII_CRS_DV
PD9 RMII_RXD0
PD10 RMII_RXD1
PG11 RMII_TXEN
PG13 RMII_TXD0
PG14 RMII_TXD1
附加

由于我之前功能里面有用SPI NOR FLASH 并且和USB,所以我把它也加上了。

引脚 描述
PF6 QSPI1_D3
PF7 QSPI1_D2
PF8 QSPI1_D0
PF9 QSPI1_D1
PF10 QSPI1_CLK
PG6 QSPI1_CS

备注: 硬件就是用的AT32_START_F437 这个板子,杜邦线跳了个WM8978而已。


编译工程

准备前提

下载 RT-Thread Studio 开发工具,并安装。

https://www.rt-thread.org/download.html#download-rt-thread-studio


导入工程

打开 RT-Thread Studio, 导入 Clone 好的工程.


安装工具链.

导入完成之后,需要选择编译工具链, 如果你是第一次打开会提示让你安装工具链, 我们选择 10.2.1 版本的工具链(别问为什么,我用的这个版本而已 😄 ):


编译前提

恭喜你,已经成功导入工程了,接下来就是编译了。正常来说我的这个仓库很多都本地化了,不需要在安装其他的库,只要点击编译应该都是:编译不过的,因为还差了一个步骤。可以看到,由于RT-Thread的 Pthread和 libc 库冲突了,所以编译不过。

我们在需要在 修改安装路径下的这个文件内容,这个路径是RT-Thread Studio安装路径下的RT-ThreadStudio\repo\Extract\ToolChain_Support_Packages\ARM\GNU_Tools_for_ARM_Embedded_Processors\10.2.1\arm-none-eabi\include\sys\types.h 文件。

请将原来第 223行 添加一个跟我一模一样的修改。

编译完成

编译完成之后,我们可以看到编译成功了。

那么有同学会问了,你这不都改了SDK了吗,不合格啊!
我哭死,我也不想改SDK,但是目前只想到了这个办法。有什么好办法,欢迎在Gitee上提交,或者留言。


软件介绍

功能介绍

源代码目录结构如下图所示:

名称 描述
main.c 主要为一些测试 音频流回环的功能
pjsip.c 最主要的SIP实现协议栈
filefs.c 配合USB做了一些录音文件存储数据读取功能。
wav.h 此文件为上位机生成了一个人声测试数组,测试Codec是否能够正常播放声音。
debug.h 测试Codec时序是否是20ms。

测试软件
准备工作

如果你想很快的测试软件,你可以使用AT32F437按照最开始的硬件接线图 连接好音频接口、CODEC、LOG保留,然后把 filefs.c 的执行函数注释掉,避免使用文件系统。

下载SIP 服务器工具和客户端工具

服务器

下载 miniSIPServer 安装完成之后打开软件,点击分机,添加2个分机,一个用于板子,一个用于手机。

客户端

  • 如果你没有另一台电脑,可以在安卓手机上安装 MizuDroid 软件, 按照一下步骤添加,如果没有注册成功,需要检查是否在同一网段,或者 服务器电脑开启了防火墙。

那又有朋友会说,我有2台电脑,该怎么办啊?

那你就下 MicroSIP ,安装之后一样只需要配置上面的参数就好了。


配置板子的账号信息

板子配置的参数,主要有:

  1. SIP服务器的IP地址、端口号、用户名、密码。
  1. SIP服务器的 认证域、认证方案,不过这些我用的是通配的,如果你的服务器有单独的配置,需要跟服务器配合着修改。

修改完成以上信息之后,在硬件接好的情况下,下载固件

别问我为什么不是截图,忘了截图了。


演示视频

视频地址:

https://www.bilibili.com/video/BV1wbXsY1EsX/


后话

非常感谢大家的关注,让我觉得我的分享是有意义的,够得到这么多人的认可。以后还会分享一些更高级的一些东西,😄。

之前好像有粉丝要求添加 3A算法,不过由于没时间,就没有加

有兴趣的同学,可以看看软件,直接将一些3A的宏打开,然后看看能不能正常运行,如果能那么就能跑,因为288Mhz主频还是应该可以跑起来的。

相关推荐
小庄梦蝶12 分钟前
Mixed Content: The page at ‘https://域名/‘ was loaded over HTTPS
网络协议·http·https
SVIP1115914 分钟前
Vue3 WebSocket 封装通关指南:心跳 + 重连 + 全局状态管理,复制即用!
网络·websocket·网络协议
隔壁大炮20 分钟前
PID控制结构&角度环实现直立
stm32·嵌入式·硬件·pid·平衡车·江协科技
羽获飞23 分钟前
从零开始学嵌入式之STM32——29.通用定时器-输入捕获模式测量信号的周期和频率
stm32·单片机·嵌入式硬件
研究点啥好呢28 分钟前
3月19日GitHub热门项目推荐|OpenClaw棋逢对手
人工智能·ai·开源·github
421!35 分钟前
ESP32学习笔记之GPIO
开发语言·笔记·单片机·嵌入式硬件·学习·算法·fpga开发
科技圈快讯41 分钟前
文多多AIPPT:部分开源+私有化部署重构PPT创作体验
重构·开源·powerpoint
惶了个恐42 分钟前
嵌入式硬件第二弹——51单片机(2)
单片机·嵌入式硬件·51单片机
taxunjishu1 小时前
MODBUS TCP转Profinet 家纺织造塔讯物联网网关应用实操案例
物联网·网络协议·tcp/ip
-Excalibur-1 小时前
IP数据包在计算机网络传输的全过程
java·网络·c++·笔记·python·网络协议·智能路由器