找回密码
 注册
关于网站域名变更的通知
查看: 486|回复: 7
打印 上一主题 下一主题

[STM32] MODBUS通讯问题?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-12-1 10:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 Heaven_1 于 2022-12-1 17:53 编辑
0 {8 A7 }7 ?8 R4 R1 n
. G" j/ X" Z- |大神们,我想把AD采样的数据Get_ADC_THR1_Value(ADC_Channel_10,20)赋值到MODBUS保持寄存器0X 0001中,该怎么操作?4 H$ v9 c% u( k) n# ^5 u. |

该用户从未签到

2#
发表于 2022-12-1 11:18 | 只看该作者
struct s3c_ts_regs {+ `6 V% p3 a$ ?& L* z' T' E7 }
unsigned long adccon;
# D0 B& }$ H. W+ z};0 B/ X' \6 u- k: U" N5 M
static volatile struct s3c_ts_regs *s3c_ts_regs;
) E' l* b2 l3 `7 S& L& Ds3c_ts_regs = ioremap(0x58000000, sizeof(struct s3c_ts_regs));3 a! b& D4 V, y% H' ?
s3c_ts_regs->adccon = (1<<14)|(49<<6);
9 Q0 W* C; s2 _参考一下吧!

点评

这个啥意识? 完全看不懂,能讲解下吗  详情 回复 发表于 2022-12-1 11:58

该用户从未签到

3#
 楼主| 发表于 2022-12-1 11:58 | 只看该作者
big_gun 发表于 2022-12-1 11:188 G! z* q4 U( _' i0 j
struct s3c_ts_regs {
* K. S) Y# @. v- J, o7 E# }4 Runsigned long adccon;
& X6 V4 ?& V. G) i/ b};
' F$ ~. I' F$ z9 K& u# F( W" p
这个啥意识?  完全看不懂,能讲解下吗
2 a  X( @/ @/ z& H7 x( Y

该用户从未签到

4#
发表于 2022-12-1 17:57 | 只看该作者
ADC_Channel_10代表的是采样用的AD10通道,
: f' z: P  D# C+ k条用这个函数会得到AD采样的值

点评

如何得到AD采样的值我知道,现在不清楚的是怎么把这个值给MODBUS的保持寄存器,然后用通讯的方式读出来  详情 回复 发表于 2022-12-1 18:14

该用户从未签到

5#
 楼主| 发表于 2022-12-1 18:14 | 只看该作者
Storm_change 发表于 2022-12-1 17:57
6 K4 s% T% T* G, i8 Z, G! Y% K6 h- ^ADC_Channel_10代表的是采样用的AD10通道,7 w/ p5 `- a7 V  Q, f( ]# g7 I) |8 J
条用这个函数会得到AD采样的值
8 _1 Z  c: S8 m; |- ?7 j- `
如何得到AD采样的值我知道,现在不清楚的是怎么把这个值给MODBUS的保持寄存器,然后用通讯的方式读出来& D9 W9 J" V6 l  E- X

该用户从未签到

6#
发表于 2022-12-5 13:34 | 只看该作者
读取ADC转换值
: [- n+ f7 r# M2 i$ ?9 T& G设置规则序列通道以及采样周期的库函数是:
; S) @! S0 N; z  v' o7 @void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t* o( }: P5 r5 ^2 o, E1 O) E. G) d
ADC_Channel,uint8_t Rank, uint8_t ADC_SampleTime);3 o  J: T* G% u. ^$ F( ^1 l

: Z( F# p) d4 x* I1 d  gADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_239Cycles5 );( b% t2 T3 O  L8 |3 K5 `. z

) A& ]  L9 r" f- ?& j6 l6 C. L' i2 G设置好规则序列通道及采样周期,接下来就要开启转换,由于我们采9 ~. O  J4 A* B8 ~. c
用的是软件触发,库函数7 s, y4 I& m$ A" Q2 \( L
void ADC_SoftwareStartConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);0 U: d: C8 k  [1 t( @% ?$ B, h$ y1 d
& R/ P, f6 `/ P: ?. x& z. T
开启转换之后,就可以获取ADC 转换结果数据,调用的库函数是:) k. _/ }- A% U& g1 S, [
uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx);7 V, @, D/ z/ G. F2 L) w2 t

& h( R: h: @3 y6 y' @: g$ Y. n7 B获取 AD 转换的状态信息的库函数是:6 T' j8 l, `6 A' H* q2 l- |: a
FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint8_t$ t, t! k0 ]! D" S
ADC_FLAG);
: k) c  ?" z: i1 T4 [" @3 t, u; @# B1 Y* z
例如我们要判断 ADC1 的转换是否结束,方法是:
- w; ?7 i: N) w# ]! ~0 U5 h' Gwhile(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束
% f. v5 [$ N, ^& `* d* L. b: Q————————————————
# z% L: A( F2 l6 M* d, b* e5 z: I
3 R: s+ J$ Y4 M0 \* @
$ _) q3 G3 H/ u8 B1 b$ w

点评

对的,流程很全,定义一个和返回值一样的变量,等待转换完就会直接得到采样的值  详情 回复 发表于 2022-12-5 13:37
  • TA的每日心情

    2019-11-20 15:01
  • 签到天数: 1 天

    [LV.1]初来乍到

    7#
    发表于 2022-12-5 13:37 | 只看该作者
    Storm_change 发表于 2022-12-5 13:34/ o" T, A  @7 w5 L9 O
    读取ADC转换值: f4 X3 n2 e8 w/ C+ c- ^! k. ]
    设置规则序列通道以及采样周期的库函数是:
    7 Y" R0 }: v7 ivoid ADC_RegularChannelConfig(ADC_TypeDef*  ...
    7 m& G7 V, }  n* Q6 X( f+ Y
    对的,流程很全,定义一个和返回值一样的变量,等待转换完就会直接得到采样的值
    " m& S, _1 V" t: B4 K

    该用户从未签到

    8#
    发表于 2022-12-6 10:41 | 只看该作者
    这边有专业团队给您提供申请专利的方案开发,专家给您布局,薇zf15984496907】与其用泪水悔恨今天,不如用汗水拼搏今天。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-3 04:24 , Processed in 0.109375 second(s), 27 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表