|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
- C1 {' C0 {! f" c! f! t9 }void PSCInit(void)3 P& ^0 z2 e; [$ M6 h: ?
{) A- ?3 v4 T' N( P: U
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
6 O* z9 X6 l+ w}
$ p, `* l0 P( n8 {- S7 F
4 t' E- s7 t. Z% J1 f3 q9 \( H# Bvoid GPIOBankPinMuxSet(void)
1 U/ r6 T" W+ s1 |5 w3 K) ~& h{
" O) r% `8 ]: T9 M6 e // DRDY ------------ GPIO6[14] -- 111
7 s6 ^. e( ]! x // SPI1_CLK ------------ GPIO2[13] -- 46
( o* _6 t4 ]7 p0 I" i // SPI1_SOMI------------ GPIO2[11] -- 44" a4 n# O6 S/ i+ Z6 g7 Z/ }
// SPI1_SIMO------------ GPIO2[10] -- 43
8 L! t- t6 L! X% P) _ // SPI1_CS2 ------------ GPIO1[0] -- 171 W- A7 V! h2 V8 d; u
// SPI1_CS3 ------------ GPIO1[1] -- 18
5 J( q4 m& n" w% v
2 e& ~) ~4 I; B, c7 L$ Z4 R! _' } HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);& T' w0 @; ~( {3 T
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);- U' ]$ X x' y/ @. ~% D
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
* [4 T- _2 u. C7 _' p: c4 N! L, f: C0 H+ G/ V
//DRDY
2 h# G0 J) X- T GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
; }' }3 k9 F5 g M: a // CS2,CS31 B) y0 Y, c' [
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
6 A3 k w- H2 [1 l2 M5 R( Z& V' }6 V( H5 a GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS38 A( `2 @6 E! X
//SIMO# S- c: Q1 d0 J/ K: R7 |! P
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
; _0 k9 Q0 Q, H( K //SOMI$ \* `" M0 z; D! }
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI" l& {& I. n0 T8 f' L' K9 X( X
//CLK
3 [9 H) O g( x0 B( ^6 I) P: r GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
/ R9 g$ \4 ?% {7 d7 ? o5 p8 l7 I, O/ b0 u
// LDAC+ ^6 g8 b/ E' n
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
! J" k8 K( }7 _3 M. D' P* } GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
- `& o3 G2 { B( J# V2 i GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2! S# M0 D$ q; N; i0 i
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
# k# Z) ]4 V# b% M5 a2 x4 O GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
Q5 ]: {) s1 ?- I2 {}( s: ?0 _* C: \; Z) I7 F
% @2 H I. ^) O- o% W
int main(void)
$ j* t, B4 ?9 t- f! G5 A{
Z2 z2 k0 C6 c* P% R( x7 ~) r // 外设使能
8 l4 h& {7 _+ i1 Q( b1 m, E PSCInit();, \9 I/ X" V x
# v- Y: L. p8 H( K
8 G8 h4 D5 |$ G2 S9 r7 J5 j; R% j // 管脚复用配置/ B! N( y4 R1 T! A! y. w4 s
GPIOBankPinMuxSet();& _( f/ \% }( i) z( [3 d$ I( V8 ^
for(;;)# R `% x7 `" R" J R1 e1 u
{3 `- Y3 q& w; y- x" D0 q/ ^1 d
SET_SCLK();//时钟正常输出6 x C" I5 r9 A2 E% w0 m; I6 g
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS22 s& T; Q3 o& z% W5 s% o+ u
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
( ?/ x7 @5 B) |# Q8 r GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN- e- |2 C5 s- c, Q* N2 @
9 ]2 c6 _2 f9 z- A; p5 l3 }# |
delay(20);
. C( I# K+ l( P' f" ?! M$ g CLR_SCLK();. @: \( |/ A3 ~8 }8 n
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS35 |2 e5 E. y1 J1 H& c" K/ S3 G; l
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
( A* T0 S0 V; F( K2 s+ u# D GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN4 T$ j h+ Y6 ?2 D& T; u; ^- q
delay(20);
6 l5 K5 L; \: p! M6 N; F, Z$ b }7 C& ?/ a) S. n
}
+ W, f9 A/ s1 h$ c/ n+ W |
|