- 积分
- 1493
- 在线时间
- 2043 小时
- 最后登录
- 2024-5-9
- 阅读权限
- 70
- 精华
- 0
- UID
- 897598
- 帖子
- 1386
- 精华
- 0
- 经验
- 1493 点
- 金钱
- 1292 ¥
- 注册时间
- 2021-2-4
|
本帖最后由 mchoi518 于 2023-11-1 08:35 编辑
看了坛子里的那个拥抱STM8的帖子,准备搞ES9038Q2M软控了,
能解码SPDIF就行,其他所有功能一概都不需要~
请大师帮我看看下面电路有无大问题,
最近51单片机学了几天基础,拥抱STM8帖子里的下面程序有几个地方看不懂,求教大师~
1. 去ST网站看了一下,没有库文件下载,只有网页上的程序代码,这些代码复制下来直接保存成.h文件就可以吗?
2. ST官网没有看到stm8s003f3p.h这个库,这个怎么搞哪位知道?
3. 第一行定义的stm8s003有什么用?下面程序中没看到引用
4. 我看了ES9038的文档,只看到音量默认-40db有问题,我只改了这一个寄存器,其他有无要设置的?
#define stm8s003
#include <stm8s.h>
#include <stm8s003f3p.h>
#include <stm8s_i2c.h>
#include <stm8s_clk.h>
#include <stm8s_gpio.h>
#define ES9038Q2M 0x90
void delay_100ms(void)
{
unsigned char i,j;
for(i=0;i<255;i++)//2*255个指令周期
for(j=0;j<255;j++);//2*255个指令周期
}
void Mute_release(void)
{
//PD_ODR_ODR3 = 1;
PD_ODR = 0xFF;
}
uint8_t I2C_Write(uint8_t address,uint8_t data)
{
while(I2C_GetFlagStatus( I2C_FLAG_BUSBUSY));
I2C_GenerateSTART( ENABLE);//开启I2C1
while(!I2C_CheckEvent( I2C_EVENT_MASTER_MODE_SELECT));/*EV5,主模式*/
I2C_Send7bitAddress(ES9038Q2M, I2C_DIRECTION_TX );//器件地址 -- 默认0x90
while(!I2C_CheckEvent( I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
I2C_SendData(address);//寄存器地址
while (!I2C_CheckEvent( I2C_EVENT_MASTER_BYTE_TRANSMITTED));
I2C_SendData(data);//发送数据
while (!I2C_CheckEvent( I2C_EVENT_MASTER_BYTE_TRANSMITTED));
I2C_AcknowledgeConfig(ENABLE);
I2C_GenerateSTOP( ENABLE);//关闭I2C1总线
}
void Sys_Init(void)
{
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
I2C_Cmd(DISABLE);
GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_OUT_OD_LOW_FAST);
I2C_Init(100000, 0xA0, I2C_DUTYCYCLE_2, I2C_ACK_CURR, I2C_ADDMODE_7BIT, 0x08);
I2C_Cmd(ENABLE);
}
int main( void )
{
Sys_Init();
delay_100ms();
delay_100ms();
delay_100ms();
delay_100ms();
delay_100ms();
I2C_Write(0x0F,0x00);//音量最大
I2C_Write(0x10,0x00);//音量最大
delay_100ms();
Mute_release();
while(1);
}
#ifdef USE_FULL_ASSERT
void assert_failed(u8* file, u32 line)
{
while (1)
{
}
}
#endif |
|