|
|
使用下面的例子代码,不能使SIMO和CS为低电平:2 d7 l/ m% J7 d+ ~; K3 X
void PSCInit(void)! ]) p6 m! D' a$ j3 }7 ]
{. { d" W; A# p, `
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
$ m, X3 R. B8 \9 q}5 u, m6 D6 c F+ H9 W/ L0 T# V
+ N& {7 L& T. v! R7 x1 V' `void GPIOBankPinMuxSet(void)
& S! c' y9 G5 B. R) k1 F' k{, m: W# a2 k8 X$ |
// DRDY ------------ GPIO6[14] -- 1116 i9 A9 L" T% U- K! I& H( s" ]
// SPI1_CLK ------------ GPIO2[13] -- 46
3 X3 b$ J4 E3 p // SPI1_SOMI------------ GPIO2[11] -- 44
0 a3 e4 g! ~9 [$ v `4 k, r // SPI1_SIMO------------ GPIO2[10] -- 43! s7 H6 c& n% l/ [
// SPI1_CS2 ------------ GPIO1[0] -- 176 a# G( t% p" X0 [+ w8 F
// SPI1_CS3 ------------ GPIO1[1] -- 183 ]/ T2 D, C, w( s
) f% Q0 Z' n$ _9 K9 T* f! X
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);$ f' D$ _) [; Q% J( B
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
+ V( k+ Q) N! I& y HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
$ t: v' C* e! e' I# r* y& z5 b- N+ F
//DRDY
; V% Q1 g7 {8 h2 L+ P, k; M# n GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY2 n4 Q2 w- I- c" d* Q& e
// CS2,CS3
0 J/ N5 {5 k8 e! u/ ?' _4 B GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2: K5 ?! s( A7 |# L. Q
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3% p" t! ]* c3 r4 j% G6 J
//SIMO
, F; R! C( a( G* w/ i GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO- y9 p5 P3 y/ n" L1 ~
//SOMI
/ x w# [; c) G6 L* @' x( D GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
- h: g5 z o9 [$ r1 \/ n9 U //CLK
1 s9 Q! @: b5 M9 F GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK2 X* Y1 h. `. X& n/ l$ s& J9 C
, a1 s! G3 t$ X* @% P C
// LDAC
8 s' Q$ w! g6 |3 D3 [. u* _6 a GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
# X: b5 i; [+ v( ?% q Q2 l7 S GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN' l5 p3 h4 Y/ S* \
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
* R* _ F5 Z9 ^5 F S5 L2 [; E& L: N* M* ` GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
* f9 L7 Q) k8 } GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
/ \2 _3 b! m* Y2 N. e0 D4 g, T}8 r9 m: l( X/ r$ J$ U& R
. \( A! B! m F2 `int main(void)
0 M/ a7 b; T) i0 d; F5 G: {5 T8 |{
" @+ \' ~( L! E9 `( |0 A D // 外设使能
0 o \! i- [( m PSCInit();& z) T( e1 a3 ^. s/ B
f4 b8 ]0 y: G4 H8 ^/ Q
2 c; q; e2 b( c# @ // 管脚复用配置
2 ~. O; f7 x- ]; Y* j/ ~% d( p GPIOBankPinMuxSet();2 G2 e9 f; }7 s$ K+ c
for(;;)' f5 c* @- V5 z% v- S$ G
{
! x0 a0 P6 x; N$ y9 i% H$ T% P5 R SET_SCLK();//时钟正常输出
- _; v" _7 L" `. o) J4 L O GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2* i/ Y' N: q, U6 Z* [3 D" K
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
) x8 H: S0 R9 C6 P& m GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN7 `$ J+ Y0 y8 i- T/ [1 U7 I. ]
4 e ~' f1 ~0 V+ M8 _) I, H delay(20);# B2 ]4 F x0 C8 V9 _% t3 O
CLR_SCLK();8 B# s2 D/ E; A; s
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3% T: |# w7 j1 z- j, ^
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
, Q- M' q/ Z0 |* w0 a3 \9 b% p GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN- {* T8 L/ k% e3 K; v
delay(20);/ N* U+ l1 f+ X+ }$ y: n
}2 u7 a7 o* {5 l+ a8 O B8 g
}
]' {; p9 [7 N0 u/ O i |
|