完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
初次尝试请不要使用过高的速率
严格按照发送8bit命令,再接收16bit或2次8bit数据来进行,不要有多余的操作,否则数据紊乱。 每次转换必须在开始后(接收到 start)的 1.6mS 内 完成,否则输入采样保持电路取样的信号会逐渐被放电衰减,影响转换结果。 #include //两个接口函数 void send_8way(uint8_t data) { HAL_SPI_Transmit(spi_, &data, 1, 1000); //不配置硬件片选(NSS)功能,手动片选 } uint8_t receiv_8way(void) { uint8_t data; HAL_SPI_Receive(spi_, &data, 1, 1000); return data; } int cmp(const void *a, const void *b) { return *(uint16_t *)a - *(uint16_t *)b; //从小到大排序(b-a则是从大到小)。需要与被测类型一致,否则排序乱七八糟 } static const uint8_t count = 9; //采集次数 uint16_t x_data[count], y_data[count]; void XPT2046_Rd_Addata(void) { cs2_0(); //片选 for (uint8_t i = 0; i < count; i++) { send_8way(0xd0); //发送命令 x = receiv_8way(); x <<= 8; x |= receiv_8way(); x >>= 4; x_data = x; send_8way(0x90); y = receiv_8way(); y <<= 8; y |= receiv_8way(); y >>= 4; y_data = y; } qsort(x_data, count, sizeof(x_data[0]), cmp); //stdlib.h里的排序函数 qsort(y_data, count, sizeof(y_data[0]), cmp); x = x_data[count >> 1]; //取中间值 y = y_data[count >> 1]; cs2_1(); } |
|
|
|
只有小组成员才能发言,加入小组>>
3314 浏览 9 评论
2995 浏览 16 评论
3494 浏览 1 评论
9059 浏览 16 评论
4088 浏览 18 评论
1180浏览 3评论
605浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
599浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2335浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1896浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 18:07 , Processed in 1.366883 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号