共2条
1/1 1 跳转至页
nbsp,nbsp,5000,McBSP 初学 求5000系列McBSP寄存器初始化代码
问
求5000系列McBSP驱动串行AD或DA的寄存器初始化代码,主要是时钟和帧同步那部分,我看了几本书也没搞清楚。
那位高手帮帮忙,把你们手上用过的发一段过来就可以,最好是c,汇编也行。
多谢啦 答 1: 回复主题:初学 求5000系列McBSP寄存器初始化代码void InitMcBSP0(void)
{
SetMcBSPReg(0,SPCR1,0x00);
SetMcBSPReg(0,SPCR2,0x00);
/*SET McBSP0*/
SetMcBSPReg(0,SPCR1,0x00);
SetMcBSPReg(0,SPCR2,0x0200);
SetMcBSPReg(0,PCR,0x0A00);
SetMcBSPReg(0,RCR1,0x40);
SetMcBSPReg(0,RCR2,0x41);
SetMcBSPReg(0,XCR1,0x40);
SetMcBSPReg(0,XCR2,0x41);
SetMcBSPReg(0,SRGR1,0x1027); ////FWID=1+1;CLKDGV=39+1,SCLK = CPU CLK /(CLKDGV+1) =1MhZ
SetMcBSPReg(0,SRGR2,0x02027);
}
void StartMcBSP0(void)
{
/* 开始McBSP0发送和采集数据 */
SetMcBSPReg(0,SPCR2,0xC0);
SetMcBSPReg(0,SPCR1,0x01);
SetMcBSPReg(0,SPCR2,0xc1);
/* ***************************/
}
void StopMcBSP0()
{
SetMcBSPReg(0,SPCR1,0x00);
SetMcBSPReg(0,SPCR2,0x00);
}
void StartDataCollect(void)
{
SetMcBSPReg(1,SPCR2,0xC0);
SetMcBSPReg(1,SPCR1,0x01);
SetMcBSPReg(1,SPCR2,0xc1);
}
void StopDataCollect()
{
SetMcBSPReg(1,SPCR1,0x0);
SetMcBSPReg(1,SPCR2,0x0);
}
void SetMcBSPReg(unsigned int McBSPNo,unsigned int McBSPReg,unsigned int Value)
{
switch(McBSPNo)
{
case 0: {
SPSA0 = McBSPReg;
C_NOP;C_NOP;C_NOP; C_NOP;C_NOP;C_NOP;
SPSD0 = Value;
C_NOP;C_NOP;C_NOP; C_NOP;C_NOP;C_NOP;
}
break;
case 1: {
SPSA1 = McBSPReg;
C_NOP;C_NOP;C_NOP; C_NOP;C_NOP;C_NOP;
SPSD1 = Value;
C_NOP;C_NOP;C_NOP; C_NOP;C_NOP;C_NOP;
}
break;
default:
break;
}
} 答 2: 非常感谢!!附加2个问题1:“SPSA1 = McBSPReg;
C_NOP;C_NOP;C_NOP; C_NOP;C_NOP;C_NOP;
SPSD1 = Value;
C_NOP;C_NOP;C_NOP; C_NOP;C_NOP;C_NOP;”
这里面的延时一定要有么?直接写可不可以?
2:普通模式下,初始化完McBSP是一定要有数据传输才有CLKX的时钟输出?还是使能/XRST后就会有输出时钟。
答 3: 延时应该有至于时钟信号应该是在初始化后就有了。
可以用示波器测一下
那位高手帮帮忙,把你们手上用过的发一段过来就可以,最好是c,汇编也行。
多谢啦 答 1: 回复主题:初学 求5000系列McBSP寄存器初始化代码void InitMcBSP0(void)
{
SetMcBSPReg(0,SPCR1,0x00);
SetMcBSPReg(0,SPCR2,0x00);
/*SET McBSP0*/
SetMcBSPReg(0,SPCR1,0x00);
SetMcBSPReg(0,SPCR2,0x0200);
SetMcBSPReg(0,PCR,0x0A00);
SetMcBSPReg(0,RCR1,0x40);
SetMcBSPReg(0,RCR2,0x41);
SetMcBSPReg(0,XCR1,0x40);
SetMcBSPReg(0,XCR2,0x41);
SetMcBSPReg(0,SRGR1,0x1027); ////FWID=1+1;CLKDGV=39+1,SCLK = CPU CLK /(CLKDGV+1) =1MhZ
SetMcBSPReg(0,SRGR2,0x02027);
}
void StartMcBSP0(void)
{
/* 开始McBSP0发送和采集数据 */
SetMcBSPReg(0,SPCR2,0xC0);
SetMcBSPReg(0,SPCR1,0x01);
SetMcBSPReg(0,SPCR2,0xc1);
/* ***************************/
}
void StopMcBSP0()
{
SetMcBSPReg(0,SPCR1,0x00);
SetMcBSPReg(0,SPCR2,0x00);
}
void StartDataCollect(void)
{
SetMcBSPReg(1,SPCR2,0xC0);
SetMcBSPReg(1,SPCR1,0x01);
SetMcBSPReg(1,SPCR2,0xc1);
}
void StopDataCollect()
{
SetMcBSPReg(1,SPCR1,0x0);
SetMcBSPReg(1,SPCR2,0x0);
}
void SetMcBSPReg(unsigned int McBSPNo,unsigned int McBSPReg,unsigned int Value)
{
switch(McBSPNo)
{
case 0: {
SPSA0 = McBSPReg;
C_NOP;C_NOP;C_NOP; C_NOP;C_NOP;C_NOP;
SPSD0 = Value;
C_NOP;C_NOP;C_NOP; C_NOP;C_NOP;C_NOP;
}
break;
case 1: {
SPSA1 = McBSPReg;
C_NOP;C_NOP;C_NOP; C_NOP;C_NOP;C_NOP;
SPSD1 = Value;
C_NOP;C_NOP;C_NOP; C_NOP;C_NOP;C_NOP;
}
break;
default:
break;
}
} 答 2: 非常感谢!!附加2个问题1:“SPSA1 = McBSPReg;
C_NOP;C_NOP;C_NOP; C_NOP;C_NOP;C_NOP;
SPSD1 = Value;
C_NOP;C_NOP;C_NOP; C_NOP;C_NOP;C_NOP;”
这里面的延时一定要有么?直接写可不可以?
2:普通模式下,初始化完McBSP是一定要有数据传输才有CLKX的时钟输出?还是使能/XRST后就会有输出时钟。
答 3: 延时应该有至于时钟信号应该是在初始化后就有了。
可以用示波器测一下
共2条
1/1 1 跳转至页
回复
| 有奖活动 | |
|---|---|
| 2026年“我要开发板活动”第三季,开始了! | |
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
我要赚赏金打赏帖 |
|
|---|---|
| 以启明云端ESP32P4开发板实现TF卡读写功能被打赏¥28元 | |
| 【分享开发笔记,赚取电动螺丝刀】树莓派5串口UART0配置被打赏¥25元 | |
| 【STM32F103ZET6】17:分享在Rtos项目中断管理的使用经验被打赏¥23元 | |
| 【STM32F103ZET6】16:分享在中断中恢复串口任务,遇到的问题被打赏¥31元 | |
| 在FireBeetle2ESP32-C5上实现温度大气压检测及显示被打赏¥21元 | |
| 【分享开发笔记,赚取电动螺丝刀】SAME51双串口收发配置被打赏¥27元 | |
| Chaos-nano操作系统在手持式VOC检测设备上的应用被打赏¥37元 | |
| 【分享开发笔记,赚取电动螺丝刀】关于在导入第三方库lib时,wchart类型冲突的原因及解决方案被打赏¥30元 | |
| 在FireBeetle2ESP32-C5上实现温湿度检测和显示被打赏¥20元 | |
| 在FireBeetle2ESP32-C5上实现光照强度检测及显示被打赏¥21元 | |
我要赚赏金
