|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
3 O4 Z6 U) t0 Y4 S+ Yvoid PSCInit(void) ~; |- W3 k/ T
{9 w' Y. x% D3 T6 x3 m- a$ |& A
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);( Q, U1 W* a; S8 I4 K& {8 m5 B$ K
}# [4 {0 c- \% b" `2 Z( r" r
5 L3 I' ~ y- \9 W$ ?void GPIOBankPinMuxSet(void)
* s1 x* Y: M2 E6 p* F! D! E3 h{( P) U" g5 S8 c' A% B; Y
// DRDY ------------ GPIO6[14] -- 1117 h# ^/ ~1 m2 E, i! p' C# Z
// SPI1_CLK ------------ GPIO2[13] -- 464 @% G9 l2 m- v: @% H9 j
// SPI1_SOMI------------ GPIO2[11] -- 44' z# J5 E* _" }' ]+ ?
// SPI1_SIMO------------ GPIO2[10] -- 436 J8 W9 i% d7 P Y1 F
// SPI1_CS2 ------------ GPIO1[0] -- 17
7 H: ?' c' e7 `' x; U // SPI1_CS3 ------------ GPIO1[1] -- 18! X+ X1 ?0 R2 ?9 I& u# J1 X
- A; N- H: C7 e, {2 }- U; l$ r0 P HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
0 C& |" |# W5 m/ P HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);: m5 j. Y/ {7 z5 T* V) {
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
+ ^7 l0 u5 L9 D# r9 ^4 ^# ^
' u+ |9 a2 f/ `. G //DRDY
" Z7 x* O4 D+ T' I/ }# R! o! V D GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
4 n5 t6 K1 x8 y# j, _" X // CS2,CS3
_1 r9 t1 w8 t3 ~1 v' D( r GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
% u; A6 x+ t% d! \1 R GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS37 T7 ^# I8 U" K$ u+ L, ~, z2 ~
//SIMO
6 e+ U) p8 a3 |2 c GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO, p; S$ G, \! N: g8 R
//SOMI
& k! X4 y# G9 \) f( ? GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
) r5 ^9 j* m2 B4 x0 Y //CLK. v9 |1 [, c+ ~" x: J8 _
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
: |8 |2 C( _6 Q" ^0 Y4 X
5 m! s. q6 v3 A2 g& f' ~/ w% w // LDAC
% q" @- g6 b$ u# M GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK* |0 @+ I/ B! y# F+ l2 T
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
- N, v5 _/ v- ? GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 M1 j6 ~8 \' k
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3/ y& X" p; X8 ~; S1 ]. ]4 T. ~
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
) y5 _+ A, U& Y! W% q9 ~1 ]1 r}
( I/ x1 B, U4 C* z C
: e9 X0 ]8 |) x* G0 ?, @: X- q( \int main(void)
6 B9 Y% V$ v: `3 O{
; C, t3 ]' u8 n. K3 \+ i // 外设使能
# d0 @2 U* T9 G0 o( N) E% L$ Z: ] PSCInit();- p. S1 q0 I! o2 M+ K" s2 e5 t
& n7 D: t, v6 B2 ~* j. B* r# a, J 6 @$ q; S# ]2 R% c" G: l. Z- ^
// 管脚复用配置& g! f2 r, I0 x! ^5 {
GPIOBankPinMuxSet();
& n% o3 v4 ^2 s6 [, T for(;;)5 f$ }0 e! ]/ Q. q7 b! {
{
1 o3 ?) r/ D9 l; Z, L" N SET_SCLK();//时钟正常输出4 V/ {) C- @0 w h
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS25 u9 d( p$ d* r$ ?* F4 E2 v
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS34 C( g6 a$ B' ]6 A' W
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN& r6 i% l& A# g
8 R. G4 A5 j, t& [
delay(20);+ N& I0 U; Y1 h5 P! S
CLR_SCLK();
2 l" b) c7 V" m1 k GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3* a9 ~: G i6 _) h, x5 d: V K3 d- K
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
# V8 Q8 M4 W, y6 A( u GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN+ J; ]/ ^# P0 V( r D
delay(20);
5 b. p* F; @. s, v }
0 c$ ^' ^& u8 b, y. X, H}
, b- R9 c0 s4 E/ l |
|