完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
硬件:买的CH376S模块。
1:5V供电采用并口方式。 2:测试晶振起振了。 3:上电RST和RST#都是低电平。与手册不符合。25脚 RST 输出 电源上电复位和外部复位输出,高电平有效,26脚 RST# 输出 电源上电复位和外部复位输出,低电平有效。 软件: #if ( CH375_PORT_MODE==2 || CH375_PORT_MODE==3 ) //DATAPORT: B0~B7 //WR: B8 //CS: B9 //A0: B10 //RD: B11 //INT: C13 #define CH375_WR PBout(8) #define CH375_CS PBout(9) #define CH375_A0 PBout(10) #define CH375_RD PBout(11) #define CH375_DATA_DIR_IN() GPIOB->CRL = 0x44444444 #define CH375_DATA_DIR_OUT() GPIOB->CRL = 0x33333333 #define CH375_DATA_DAT_OUT( mCmd ) GPIOB->ODR = (GPIOB->ODR & 0xFF00) | (uint8_t)mCmd #define CH375_DATA_DAT_IN( ) (uint8_t)GPIOB->IDR //CH375写命令函数 void xWriteCH375Cmd( UINT8 mCmd ) { CH375_DATA_DAT_OUT( mCmd ); /* 向CH376的并口输出数据 */ CH375_DATA_DIR_OUT( ); /* 设置并口方向为输出 */ CH375_A0 = 1; CH375_CS = 0; CH375_WR = 0; /* 输出有效写控制信号, 写CH376芯片的命令端口 */ CH375_WR = 0; /* 该操作无意义,仅作延时,CH376要求读写脉冲宽度大于40nS */ CH375_WR = 1; /* 输出无效的控制信号, 完成操作CH376芯片 */ CH375_CS = 1; CH375_A0 = 0; CH375_DATA_DIR_IN( ); /* 禁止数据输出 */ delay_us(2); } //CH375写数据函数 void xWriteCH375Data( UINT8 mData ) { CH375_DATA_DAT_OUT( mData ); /* 向CH376的并口输出数据 */ CH375_DATA_DIR_OUT( ); /* 设置并口方向为输出 */ CH375_A0 = 0; CH375_CS = 0; CH375_WR = 0; /* 输出有效写控制信号, 写CH376芯片的数据端口 */ CH375_WR = 0; /* 该操作无意义,仅作延时,CH376要求读写脉冲宽度大于40nS */ CH375_WR = 1; /* 输出无效的控制信号, 完成操作CH376芯片 */ CH375_CS = 1; CH375_DATA_DIR_IN( ); /* 禁止数据输出 */ delay_us( 1 ); /* 确保读写周期大于0.6uS */ } //CH375读数据函数 UINT8 xReadCH375Data( void ) { UINT8mData; delay_us( 1 ); /* 确保读写周期大于0.6uS */ CH375_DATA_DIR_IN( ); /* 设置并口方向为输入 */ CH375_A0 = 0; CH375_CS = 0; CH375_RD = 0; /* 输出有效读控制信号, 读CH376芯片的数据端口 */ CH375_RD = 0; /* 该操作无意义,仅作延时 */ mData = CH375_DATA_DAT_IN( ); /* 从CH376的并口输入数据 */ CH375_RD = 1; CH375_CS = 1; /* 输出无效的控制信号, 完成操作CH376芯片 */ return( mData ); } void CH375_Init( void ) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin = 0x0FFF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOB, &GPIO_InitStructure); #ifdef CH375_INT_WIRE GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOAtiNG;//INT GPIO_Init(GPIOC, &GPIO_InitStructure); #endif CH375_CS = 1; CH375_WR = 1; CH375_RD = 1; CH375_A0 = 0; CH375_DATA_DIR_IN( ); /* 设置并口输入 */ } int main(void) { unsigned char i,s; unsigned short len; delay_init(); USART_Config(); CH375_Init(); printf("start...n"); // 发送测试命令 xWriteCH375Cmd(CMD11_CHECK_EXIST); // 发送测试数据 xWriteCH375Data(0x11); // 读数据 s = xReadCH375Data(); printf("s:%xn",s); |
|
相关推荐
1个回答
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
468 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2871 浏览 2 评论
2359 浏览 1 评论
811浏览 2评论
CH569通过HSPI实现USB3.0和FPGA高速双向通讯
637浏览 1评论
495浏览 1评论
CH32F103C8T6使用当前官网上的CDC例程会出现设备描述符请求失败
360浏览 1评论
636浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 18:17 , Processed in 0.818013 second(s), Total 49, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号