【原创首发】开源基于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主频还是应该可以跑起来的。

相关推荐
huhy~24 分钟前
GitHub开源的容器管理面板-Dpanel
开源·github
rookie fish1 小时前
websocket结合promise的通信协议
javascript·python·websocket·网络协议
说私域1 小时前
开源链动2+1模式与AI智能名片赋能的S2B2C共享经济新生态
人工智能·微信·小程序·开源
hikktn3 小时前
【开源宝藏】30天学会CSS - DAY8 第八课 跳动的爱心动画
前端·css·开源
遇码3 小时前
阿里开源的免费数据集成工具——DataX
大数据·开源·kettle·datax·数据集成·flinkcdc·seatunnel
说私域3 小时前
开源链动2+1模式、AI智能名片与S2B2C商城小程序源码在社交电商渠道拓宽中的协同应用研究
人工智能·小程序·开源·零售
JEECG官方3 小时前
标星 62.9 万,8 个 yyds 的 GitHub 开源项目 !
开源·github
大鹏dapeng5 小时前
如何给Gone框架编写Goner组件(下)——给对接Apollo的Goner组件编写测试代码
开源·go·github
大鹏dapeng5 小时前
如何给Gone框架编写Goner组件(上)——编写一个Goner对接Apollo配置中心
架构·开源·go
Peter_Deng.5 小时前
单片机 - 位运算详解(`&`、`|`、`~`、`^`、`>>`、`<<`)
c语言·单片机·嵌入式硬件