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

news2025/3/27 15:36:57

前言

本次为了反馈各位粉丝的关注,特此分享 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.

参数描述
CPUAT32F437ZITx
主频288MHz
Flash4MB
RAM512KB
音频接口I2S2
音频配置I2C1
LOGUART1
CODECWM8978
以太网RMII
引脚分配
  • 音频接口使用的I2S2.
引脚描述
PB12I2S_WS / I2S_FS
PC6I2S_MCLK
PB13I2S_CK / I2S_SCLK / I2S_BCK
PC2I2S_EXT_SD / I2S_SIN
PC3I2S_SD / I2S_SOUT
  • WM8978配置使用 I2C1.
引脚描述
PB6I2C_SCL
PB7I2C_SDA
  • LOG输出使用UART1.
引脚描述
PA9UART_TX
PA10UART_RX
  • 以太网配置使用RMII.
引脚描述
PA1RMII_REF_CLK
PA2RMII_MDIO
PC1RMII_MDC
PD8RMII_CRS_DV
PD9RMII_RXD0
PD10RMII_RXD1
PG11RMII_TXEN
PG13RMII_TXD0
PG14RMII_TXD1
附加

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

引脚描述
PF6QSPI1_D3
PF7QSPI1_D2
PF8QSPI1_D0
PF9QSPI1_D1
PF10QSPI1_CLK
PG6QSPI1_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主频还是应该可以跑起来的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2321026.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一篇文章入门Python Flask框架前后端数据库开发实践(pycharm在anaconda环境下)

Python Flask 是一个轻量级的 Web 应用框架,也被称为微框架。它以简洁、灵活和易于上手的特点而受到开发者的喜爱。 核心特点 轻量级:Flask 核心代码简洁,仅包含 Web 开发的基本功能,不强制使用特定的数据库、模板引擎等&#xf…

AI+金融 应用 使用DeepSeek、Qwen等大模型输入自然语言,得到通达信等行情软件公式代码,导入后使用

AI金融 应用 使用DeepSeek、Qwen等大模型输入自然语言,得到通达信等行情软件公式代码,导入后使用。不会编程,也能行情软件中实现个性化条件选股,个性化技术指标。 AIbxm低估值趋势选股策略,参考提示词: 编…

C++20 中的同步输出流:`std::basic_osyncstream` 深入解析与应用实践

文章目录 一、std::basic_osyncstream 的背景与动机二、std::basic_osyncstream 的基本原理三、std::basic_osyncstream 的使用方法(一)基本用法(二)多线程环境下的使用(三)与文件流的结合 四、std::basic_…

【嵌入式硬件】三款DCDC调试笔记

关于开关电源芯片,重点关注输入电源范围、输出电流、最低压降。 1.MP9943: 以MP9943为例,输入电压范围4-36V,输出最大电流3A,最低压降为0.3V 调整FB使正常输出为5.06V 给定6V空载、5V空载、5V带2A负载的情况: 6V带2A…

【FPGA开发】FPGA点亮LED灯(增加按键暂停恢复/复位操作)

目录 一、VScode下载安装 1.1 官网下载 1.2 安装插件 二、LED流水灯点亮 2.1 任务说明 2.2 新建项目 2.3 创建Verilog文件添加至顶层实体 2.4 引脚分配 2.5 选择烧录器 2.6 添加烧录文件&下载 2.7 烧录结果 三、增加按键操作 3.1 按键暂停和恢复功能&…

Spring MVC 执行流程:一个请求在 Spring MVC 中是如何执行的?

当用户发送一个 HTTP 向 Spring MVC 应用,该请求在 Spring MVC 的执行流程如下: 当用户向 Spring MVC 发起一个 HTTP 请求,该请求会被 Dispatcher Servlet(前端控制器)拦截;DispatcherServlet 调用 Handler…

三主热备架构

1.要求 角色主机名软件IP地址用户client192.168.72.90keepalivedvip192.168.72.100masterserverAkeepalived, nginx192.168.72.30backupserverBkeepalived, nginx192.168.72.31backupserverCkeepalived, nginx192.168.72.32webtomcat1tomcat192.168.72.41webtomcat2tomcat192.1…

JavaScript | 爬虫逆向 | 语法基础| 01

一、摘要 实践是最好的导师 二、环境配置 在开始之前,需要确保你的计算机上已经安装了 Node.js。Node.js 是一个开源的、跨平台的 JavaScript 运行时环境,它允许你在服务器端运行 JavaScript 代码。 1. 下载 安装地址:https://nodejs.org…

字节跳动实习生主导开发强化学习算法,助力大语言模型性能突破

目录 禹棋赢的背景与成就 主要成就 DAPO算法的技术细节 算法优势 禹棋赢的研究历程 关键时间节点 字节跳动的“Top Seed人才计划” 计划特点 小编总结 在大模型时代,经验不再是唯一的衡量标准,好奇心、执行力和对新技术的敏锐洞察力成为推动技术…

前后端+数据库的项目实战:hbu迎新网-较复杂(下)javaweb

目录 十一、实现对内容的富文本编辑(换行、图片颜色等等样式) (1)下载富文本编辑器,引入资源 (2)将原项目的内容部分替换为富文本编辑器 1、替换添加页面 2、替换修改页面(和添…

Redis、Memcached应用场景对比

环境 Redis官方网站: Redis - The Real-time Data Platform Redis社区版本下载地址:Install Redis | Docs Memcached官方网站:memcached - a distributed memory object caching system Memcached下载地址:memcached - a dis…

【单片机通信技术应用——学习笔记三】液晶屏显示技术,取模软件的应用

一、液晶显示技术简介 1.RGB信号线 RGB是一种色彩模式,是工业界的一种颜色标准,是通过红(R)、绿(G)、蓝(B)三个颜色通道的变化,以及它们相互之间的叠加来得到各式各样的…

MySQL颠覆版系列————MySQL新特性(开启数据库的新纪元)上篇

文章目录 前言一、窗口函数(Window Functions)1.1 窗口函数概念1.2 常见的窗口函数 二、公用表表达式(Common Table Expressions, CTEs)2.1 公用表表达式的概念2.2 常见的公用表表达式 三、JSON增强3.1 JSON增强的概念3.2 常见的J…

MySQL 调优:查询慢除了索引还能因为什么?

文章目录 情况一:连接数过小情况二:Buffer Pool 太小 MySQL 查询慢除了索引还能因为什么?MySQL 查询慢,我们一般也会想到是因为索引,但除了索引还有哪些原因会导致数据库查询变慢呢? 以下以 MySQL 中一条 S…

如何在百度搜索上删除与自己名字相关的资料

个人信息的网络足迹如同一张无形的网,将我们与世界的每一个角落紧密相连。然而,当某些与自己名字相关的资料不再希望被公众轻易检索到时,如何在百度搜索中有效“隐身”,成为了一个亟待解决的问题。面对复杂多变的网络环境&#xf…

使用外部事件检测接入 CDH 大数据管理平台告警

CDH 大数据管理平台 CDH(Cloudera Distribution Hadoop)是一个企业级的大数据平台,由 Cloudera 公司提供,它包含了 Apache Hadoop 生态系统中的多种开源组件,并对其进行了优化和集成,以支持大规模数据存储…

MongoDB(五) - Studio 3T 下载与安装教程

文章目录 前言一、Studio 3T 简介二、下载及安装1. 下载2. 安装 三、使用Studio 3T连接MongoDB 前言 本文旨在全面且深入地为你介绍 Studio 3T。从其丰富的功能特性、跨平台使用的便捷性,到详细的下载安装步骤,以及关键的连接 MongoDB 操作,…

汽车制造MES

一、整体生产工序 整车的车间主要分为4个部分:冲压、焊装、涂装、总装、整车入库 系统架构 二、车间概括 1.冲压车间 2.焊装车间 3.涂装车间 4.总装车间 1.整车装配的部件都要可追溯、数据实时性要求高、涉及分装与总装的协调、物流配送的协调、质量批处理的协调、…

信奥赛CSP-J复赛集训(模拟算法专题)(26):P5412 [YNOI2019] 排队

信奥赛CSP-J复赛集训(模拟算法专题)(26):P5412 [YNOI2019] 排队 题目描述 小明所在的班级要举办一场课外活动,在活动开始之前老师告诉小明:“需要把男女生分成两队,并且每一队都要按照身高从矮到高进行排序”。但是由于小明的马虎,没有把老师的安排转达给同学,导致全…

基于开源模型的微调训练及瘦身打造随身扫描仪方案__用AI把手机变成文字识别小能手

基于开源模型的微调训练及瘦身打造随身扫描仪方案__用AI把手机变成文字识别小能手 一、准备工作:组装你的"数码工具箱" 1. 安装基础工具(Python环境) 操作步骤: 访问Python官网下载安装包安装时务必勾选Add Python to…